引入
递归学习过编程的基本上都应该大体知道,但是递归的效率并不高,我们通常使用迭代循环,但我在探索未知的情况下,递归可能会更好。我们通过斐波那契数列来了解一下递归。
斐波那契数列
因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34…
即开始有一对儿兔子,然后3个月后兔子长大了,这对兔子会生一对儿兔子,之后的每个月这对儿兔子又生一对儿,假设兔子不会死亡,那么 N 个月后有多少对儿兔子。
理解
数列:1、1、2、3、5、8、13、21、34…
找到数列的规律之后,我们发现,3号数是1号+2号,6号数是4号+5号,即该数前两个数的和。
迭代循环解题
#include <stdio.h>
int main(){
int f1=1,f2=1,f3;
//将第1、2个月的数先赋值,作为计算基底
printf("%12d\t%12d\t",f1,f2);
//由于已经赋值了,所以就先输出
for(int i=3;i<41;i++){
f3=f1+f2;
printf("%12d\t",f3);
//利用循环输出第三个月的数,也就是前两个月的和
if(i%4==0){
printf("\n");
}
//判断换行
f1=f2;
f2=f3;
//将用于相加的两个数向前推移
}
}
