兔子问题---斐波那契数列

问题:

    古典问题:有一对兔子,从出生后3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,加入兔子都不死,问每个月的兔子总数是多少?

    分析:

      1,兔子的规律:1,1,2,3,5,8,13,21...

      2,第一个月和第二个月的都是1,后面的每个月的兔子数都符合前一个月的加再前一个月的

      3,可以使用递归来做,时间复杂度是O(2^n)

      4,可以采用循环来做,时间复杂度是O(n)

代码1:O(n),循环来做

main(){

    int i,f1=1,f2=1;

        for(i=0;i<10;i++){

            printf("%d %d ",f1,f2);

            f1=f1+f2;

            f2=f1+f2;

        }

}

结果:


    代码2:递归

int f(int n){

    if(n==1||n==2){

        return 1;

    }else{

        return f(n-1)+f(n-2);

    }

}

main(){

    for(i=1;i<21;i++){

            printf("%d ",f(i));

        }

}

结果:


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容