[01]斐波拉契数列,有人买了一对小兔子,已知小兔子一个月后长成大兔子,大兔子每个月生一对小兔子,问:两年(24个月)之后,他一共有几对兔子。
第i月份 | 大兔子 | 小兔子 | 总兔子 |
1 | 0 | 1 | 1 |
2 | 1 | 0 | 1 |
3 | 1 | 1 | 2 |
4 | 2 | 1 | 3 |
5 | 3 | 2 | 5 |
6 | 5 | 3 | 8 |
7 | 8 | 5 | 13 |
8 | 13 | 8 | 21 |
9 | 21 | 13 | 34 |
10 | 34 | 21 | 55 |
11 | 55 | 34 | 89 |
12 | 89 | 55 | 144 |
数列问题的递推解法
int[] num=new int[24];//24个月
num[0] = 1;//第一个月总共1只 大兔子0 小兔子1 总兔子1
num[1] = 1;//第二个月总共1只 大兔子1 小兔子0 总兔子1
for (int i = 2; i < 24; i++)//num[2]即第三个月
{
num[i] = num[i - 1] + num[i - 2];
Console.WriteLine("第"+(i+1)+"个月有"+num[i]+"只兔兔");
};
第i个月总数 是前两个月之和
流程图
2
同理替换
int first = 0;
int second = 1;
//记录每一次的结果
int result = 0;
for (int i = 2; i < n + 1; i++)
{
result = first + second;
first = second;
second = result;
}