例15:求Fibonacci数列的前40个数。这个数列有以下特点:第1,2两个数为1,1,。从第三个数开始,该数是其前两个数之和。(斐波那契不死神兔)
解题思路:从前两个月的兔子数可以推出第3个月的兔子数。设第1个月的兔子数f1=1,第2个月的兔子数为f2=1,第3个月的兔子数f3=f1+f2=2。
源代码演示:
#include<stdio.h>//头文件 int main()//主函数,程序的入口 { int i,f1,f2,f3,row; //定义变量 f1=1,f2=1; //变量初始化 printf("输入需要输出的行数:");//提示语句 scanf("%d",&row); //键盘输入行数 printf("%d\n%d\n",f1,f2); //先输出第一行和第二行 for(i=1;i<row-1;i++) ///循环控制后row-2行 { f3=f2+f1; //第3行的值是前面两行之和 printf("%d\n",f3); f1=f2; //变量赋值 f2=f3; } }
编译运行结果如下:
输入需要输出的行数:30 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 -------------------------------- Process exited after 2.806 seconds with return value 29 请按任意键继续. . .
读者应该注意此程序只是简单的输出前30行,数字还是比较小的,如果想要更多的输出,要用long int(长整型)定义,要不然回超出int的范围,出现下面所示:
输入需要输出的行数:600 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 ……………… -1831132203 1787838701 -43293502 1744545199 1701251697 -849170400 -------------------------------- Process exited after 2.706 seconds with return value 599 请按任意键继续. . .