递归总结及斐波那契数列的实现

优点:递归给某些编程问题提供了简单的方法

缺点:有缺陷的递归会很快耗尽计算机的资源,递归的程序难以理解和维护

杀毒软件会全盘扫描文件,其中就应用了递归

斐波那契数列的实现如下

#include<stdio.h>

int fib(int n)
{
    if(n == 1)
      return 1;
    if(n == 2)
      return 2;
    if(n > 2)   //此行可省略
      return  fib(n - 1) + fib(n - 2);  //返回第三个数 ,有返回值不能用void
}

int main()
{
  int i;
  for(i = 1; i < 10; i++)
  {
      printf("%d",fib(i));
  }
  return 0;
 } 

原文地址:https://www.cnblogs.com/yangxiaoqin/p/8410712.html

时间: 2024-10-03 23:26:58

递归总结及斐波那契数列的实现的相关文章

用递归法计算斐波那契数列的第n项

   斐波纳契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了<斐波纳契数列>季刊,专门刊载这方面的研究成果. [Fibonacci.cpp] #include<iostream>#

剑指offer (9) 递归和迭代 斐波那契数列

通常基于递归实现的代码比基于循环实现的代码要简洁很多 比如 二叉树遍历以及 二叉树的许多操作 递归由于是函数调用自身,每一次函数调用,都需要在内存栈中分配空间以保存参数.返回地址以及临时变量 而每个进程的栈容量是有限的,当递归调用的层级太多时,就会导致 调用栈溢出 递归有时伴随大量重复的计算, 二叉树遍历的递归操作不存在重复计算,因为每个结点的左右子树是严格区分开的 例如求解 斐波那契数列: 解题分析 int fib(int n) { assert(n >= 0); int prevTwo =

使用递归,计算斐波那契数列

使用递归,计算斐波那契数列 function fib(num) { if (num > 2) { return fib(num - 2) + fib(num - 1); } else { return 1; } } fib(6) 运行过程 1. return fib(4)+fib(5) 2.return fib(2)+fib(3)+fib(3)+fib(4) 3.return 1+fib(1)+fib(2)+fib(1)+fib(2)+fib(2)+fib(3) 4.return 1+1+1+1

递归思想之---斐波拉契数列

斐波那契数列中的递归思想 ??如果上述的分析都明白了,那就说明你已掌握了递归,但为了加深对递归的理解,我们再来看一个思考题(来自程序员的数学思考题),题目是这样的,假如动物中有一种特殊的种类,它出生2天后就开始以每天1只的速度繁殖后代.假设第1天,有1只这样的动物(该动物刚出生,从第3天开始繁殖后代).那么到第11天,共有多少只呢? 我们先来按一般顺序思考,先不要考虑第11天,先从第1天开始,看能不能找出规律: [第1天]只有1只动物 [第2天]只有1只动物,还没有繁殖后代,总量为1 [第3天]

递归练习之斐波那契数列

/********************************************************************************* Copyright (C), 1988-1999, drvivermonkey. Co., Ltd. File name: Author: Driver Monkey Version: Mail:[email protected] qq:196568501 Date: 2014.04.02 Description: 递归练习之阶乘运

下午学了递归,先是斐波那契数列

#include<stdio.h>int zhd(int n){ if(n==1||n==2)     return 1; else    return zhd(n-1)+zhd(n-2);    }int main(){ int n; scanf("%d",&n); printf("%d",zhd(n)); return 0;\}

关于斐波那契数列和递归

递归有三个基本点: 1.递归总有一个最简单的情况.即边界或者跳出递归的条件语句: 2.递归总是尝试解决一个规模更小的问题: 3.递归尝试解决的父问题和子问题之间不因该有交集: 以下是几个递归代码://斐波那契数列 import edu.princeton.cs.algs4.StdOut; public class No_1_1_19 { public static void main(String[] args) { for(int n=0;n<10;n++) { StdOut.println(

斐波那契数列的Python实现

? 斐波那契数列的Python实现:递归实现.非递归实现.斐波那契数列生成器: \[ \begin{equation} F(n)= \begin{cases} n & n=0, 1\F(n-1) + F(n-2) & n > 1 \end{cases} \end{equation} \] 递归实现: # python def fib(n): if n <= 1: return n else: return fib(n-1) + fib(n-2) 非递归实现: # python

斐波那契数列的记忆搜索

目录 摘要 斐波那契数列 经典递归分析 动态规划分析 摘要 本blog通过"斐波那契数列求值"这个经典问题,分析并说明"从单一递归到记忆搜索"这个思想过程.本blog是整个动态规划学习的一部分.(记忆搜索是动态规划的递归写法) 斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列",指的是这样一个数列: