斐波那契数列
兔子问题:假设第一个月有一对兔子,第三个月后开始每个月生产一对兔子,生产的兔子从出生第三个月后每个月生产一对兔子,依此往后推,第几个月能有N只兔子?(N<10000)
斐波那契数列:1 1 2 3 5 8 13…数列从第三个数开始每个数是前两个数之和。
采用时间复杂度为O(n)的算法:
#include <iostream>
using namespace std;
int main() {
int N,i=2;
int M;
int res=1,pre=1;//数列第一第二项
int temp;
cin>>N;
if(N<=0)
M=0;
else if(N==1)
M=1;
else if(N>1)
while( N >res) {//假如6只兔子,至少要到第6个月才有
temp = res + pre;
pre = res;
res = temp;
i++;
M=i;
// cout<<res<<endl;
}
cout<<M;
}