递归函数——斐波那契数列
1、什么是斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”。
第一个月只有一对兔宝宝,1对兔子。
第二个月兔宝宝变成大兔子,1对兔子。
第三个月大兔子生了一对兔宝宝,一大一小2对兔子。
第四个月大兔子继续生一对兔宝宝,小兔子变成大兔子。两大一小3对兔子。
……
其数值为:1、1、2、3、5、8、13、21、34……
2、递归公式
可表示为递归公式:
3、C语言实现
#include <stdio.h>
//定义函数求斐波那契数列的第n项的值
long fibonacci(n) {
if (n == 1 || n == 2) {
return 1; // 递归出口
}
else {
return fibonacci(n-1)+fibonacci(n-2); // 递归调用
}
}
//调用函数,输出斐波那契数列的前20项的值
int main() {
int i;
for(i=1;i<=20;i++){
printf("%10d",fibonacci(i));
if(i%5==0) // 输出5个换一行
printf("\n");
}
}
输出结果:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765