递归
1.思想:将问题转化为小规模的子问题,先求出低层次子问题的解,然后利用相同的方法求高层次的解,最终获得问题的解。
2.举例:兔子问题。此时分析兔子问题可发现,其对应Fibonacci数列,第一项和第二项都是1,从第三项开始,每一项都等于前两项的和。
3.C语言实现:
#include <stdio.h>
int Fibonacci(int m)
{
int n1, n2, n;
if(m == 1 || m == 2)
return 1;
else
{
n1 = Fibonacci(m-1);
n2 = Fibonacci(m-2);
n = n1 + n2;
return n;
}
}
int main()
{
int m, num;
printf("请输入时间:");
scanf("%d",&m);
num = Fibonacci(m);
printf("经过%d月之后,有%d对兔子。\n", m, num);
return 0;
}
4.结果: