您当前的位置:首页 > 计算机 > 编程开发 > C语言

Fibonacci数列(兔子繁殖)问题

时间:01-03来源:作者:点击数:

求Fibonacci数列:1,1,2,3,5,8,13,… 的前40项。

本题来自于一个有趣的古典数学问题:有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月又生一对兔子。如果生下的所有兔子都能成活,且所有的兔子都不会因年龄大而老死,问每个月的兔子总数为多少?

分析:

① 此数列的规律是第1、2项都是1,从第3项开始,都是其前两项之和,并且有固定循环次数,因此可以用for循环实现。

② 这里用到的是什么算法呢?是迭代算法。迭代算法的基本思想是:不断地用新值取代变量的旧值,或由旧值递推出变量的新值。

程序如下:

main( ) 
{ 
 long int f1,f2; 
 int i; 
 f1=1;f2=1; 
 for(i=1;i<=20;i++) 
 { 
 printf("%12ld %12ld ",f1,f2); /*每次输出两项*/ 
 if(i%2==0) printf("\n"); 
 f1=f1+f2; 
 f2=f2+f1; /*求出两项*/ 
 } 
}

运行结果为:
          1 1 2 3
          5 8 13 21
          34 55 89 144
          233 377 610 987
          1597 2584 4181 6765
          10946 17711 28657 46368
          75025 121393 196418 317811
          514229 832040 1346269 2178309
          3524578 5702887 9227465 14930352
          24157817 39088169 63245986 102334155     
    

请思考:如果使用数组,则程序如何编写? 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
上一篇:说谎问题 下一篇:百钱百鸡问题
推荐内容
相关内容
栏目更新
栏目热门