zoukankan      html  css  js  c++  java
  • 递归函数__斐波拉契数列__

    递归

        ____函数自己调用自己,又可以理解为自己的事情自己做。

       如果觉得难以理解,可以把理解成这个函数调用了一个函数,只是这个函数和自己长得一模一样。

    ---------------------------------------------------------------------------------------

        拿一对刚出生的小兔子编故事。

        假设,一对刚出生的小兔子,第一个月没有繁殖能力,两个月后生下一对兔子。

        假设所有的兔子都不死,那么10月后有多少对兔子?

    所经历的月数                    1           2            3           4          5           6           7             8               9              10

    兔子对数         1      1      2      3     5      8     13    21     34      55

    ---------------------------------------------------------------------------------------

    #include <stdio.h>
    
    int FBArray(int i)
    {//FBArray(1)    FBArray(2)    FBArray(3)    FBArray(4)    FBArray(5)
     //    1              1            2             3             5     
        if(i < 2)
        {
            return (i == 0)? 0 : 1;
        }
        return FBArray(i-1) + FBArray(i-2);
    }
    
    int main()
    {
        printf("
    ");
        int i;
        for(i = 1 ; i <= 40 ; i++)
        {//打印40个月兔子的数量变化
            printf("%d
    ",FBArray(i));
        }  
        printf("
    ");
        
        return 0;
    }
     

     如果考虑算法复杂度的的话,还是以下代码更优

     
    //斐波那契数列查找算法,求斐波那契数列第n项
    #include<stdio.h>
    unsigned long long FBArray(unsigned int n); 
    int main(void)
    {
        int n;
        scanf("%d" , &n);
        printf("%llu
    " , FBArray(n));
        return 0;
    }
    unsigned long long FBArray(unsigned int n)
    {
        int i , fibone , fibtwo , fibthree;
        int fi[2] = {0 , 1};
        fibone = 0;
        fibtwo = 1;
        
        if(n < 2)
        {
            return fi[n];
        }
        else
        {
            for(i = 2;i <= n;i++)
            {
                fibthree = fibone + fibtwo;
                fibtwo = fibone;
                fibone = fibthree;
            }
            return fibthree;
        }
    }
  • 相关阅读:
    CCI_Q1.5
    CCI_Q1.4
    js 记录一次日期转换
    列表注册自定义鼠标右键事件
    jquery点击页面其他位置隐藏div
    C#一句话判断两个List<T>是否相等
    使用Js进行linq处理
    记录一次DataTable排序的问题
    JavaScript模板引擎Handlebars
    Redis学习笔记
  • 原文地址:https://www.cnblogs.com/baixiaoxiao/p/10573119.html
Copyright © 2011-2022 走看看