兔子数列问题
斐波那契数列,又称黄金分割数列,以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
为什么f(n)=f(n-1)+f(n-2)?
我们假设兔子在经过两年后,每年都会繁殖一次。那么假设起始时候有一对兔子,这对兔子在经过第一年后并未繁殖,我们这个时候称这对兔子为小兔子,等到第二年的时候,这对兔子我们称为成年兔子,并且繁殖了一对小兔子,一直持续下去… 我们分析可以得到,第n月的小兔子数是第n-1月成年兔的数量,第n月的成年兔子数是第n-1月成年兔子数+小兔子数。所以,设f(n)为第n月兔子数量,则:
f(n)=n月小兔子数+n月成年兔子数
n月小兔子数=n-1月成年兔子数
n月成年兔子数=n-1月小兔子数+n-1月成年兔子数
n-1月成年兔子数=n-2月小兔子数+n-2月成年兔子数=f(n-2)
将上式合并就可以得到f(n)=f(n-1)+f(n-2)
问题
#include <iostream>
using namespace std;
int main() {
int n, m=0, p = 1, q = 1;
cin >> n;
if (n == 1 || n == 2)
cout << 1 << endl;
else {
for (int i = 3; i <= n; i++) {
m = p + q;
p = q;
q = m;
}
cout << m << endl;
}
return 0;
}