古典问题:有一对兔子...

zhujinqiang 2008-03-20 05:23:16
/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
       后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
    
  解若把兔子分成小兔子、中兔子和大兔子,不满1个月的为小兔子、满1个月不满2个月的为中兔子,满3个月以上的是老兔子,兔子对数按题目所说的方式增长如表 1所示。从表1最右边可看出:按月增长“兔子总对数”依次为1,1,2,3,5,8,13,...,这就是Fibnacci数列,它具有如下特点:第1和第2两项为1和1,从第3项开始每项是其前面两项之和.由此可得到该数列的迭代公式为:
 */

   F1=1;
   F2=1;
   Fi=Fi-1 + Fi-2 (i>=3);
  
  表1
  
  月份 小兔子对数 中兔子对数 老兔子对数 兔子总对数
   1 1 0 0 1
   2 0 1 0 1
   3 1 0 1 2
   4 1 1 1 3
   5 2 1 2 5
   6 3 2 3 8
   7 5 3 5 13
  ... ... ... ... ...

/*编写如下源程序求得Fibonacci数列得前40项.
  */
  #include <stdio.h>
  
  void main()
  {
   long f1 = 1, f2 = 1;
   //定义long型变量f1和f2,最初作为数列的第一项和第二项,以后 作为数列的两个项
   int i; //定义int型变量i作为for语句的循环变量
   printf("按每月增长,兔子总对数组成的数列为: \n");
   for(i=1;i<=20;i++)
   {
   printf("%8Ld %8Ld ", f1 ,f2);
   //输出显示数列的两项f1和f2,每项占用域宽为8个字符,间 隔2个空格
   if(i%4==0)
   printf("\n");//变量i为4的整数倍时换行,每行显示8个数
   f1 = f1 + f2;//从第3项开始,计算某项的值
   f2 = f2 + f1;//计算某项紧跟项的值
   }
   printf( "\n");
  }
...全文
1321 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyllw1011 2008-05-29
  • 打赏
  • 举报
回复
呵呵
wyllw1011 2008-05-29
  • 打赏
  • 举报
回复
加油
wyllw1011 2008-05-29
  • 打赏
  • 举报
回复
很经典,很好!
独孤过儿 2008-03-20
  • 打赏
  • 举报
回复
斐波那契数列...
zgc110 2008-03-20
  • 打赏
  • 举报
回复
看看。
没什么经典
俗了点。。。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧