C语言经典例11-斐波那契数列
目录 1 题目 2 分析 3 实现 3.1 实现1(递归) 3.2 实现2(非递归) 4 运行结果 1 题目 古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可) 2 分析 将该例建立数学模型,规律为1,1,2,3,5,8, 13, 21, 34, 55, 89, 144, …,即下个月是上两个月之和,该模型在数学上称为fibonacci数列,通过这个规律可以构造递归函数,也可以构造非递归函数计算,显然递归函数的效率非常非常低,但是程序简洁明了。 3 实现 3.1 实现1(递归) # include <stdio.h> int fibonacci ( int n ) { if ( n == 1 || n == 2 ) { return 1 ; } else { return fibonacci ( n - 1 ) + fibonacci ( n - 2 ) ; } } int main ( ) { for ( int i = 1 ; i <= 40 ; i ++ ) { printf ( "第%d个月个数为%d\n" , fibonacci ( i ) ) ; } return 0 ; } 3.2 实现2(非递归) # include <stdio.h>