//Fibonacci数列
//一对小兔子长到3个月的时候会生一对小兔子,求刚开始一对小兔子之后的第n个月
//一共有多少对兔子,不计兔子的死亡
//第一个月 1 对
//第二个月 1 对
//第三个月 2 对
//第四个月 3 对
//递推法
int Fibonacci_1(int n){
if (n <= 2){
return 1;
}
else{
return Fibonacci_1(n - 1) + Fibonacci_1(n - 2);
}
}
//迭代法
int Fibonacci_2(int n){
int first = 1;
int second = 1;
int ret = 1;
for (int i = 3; i <= n; ++i){
ret = second + first;
second = first;
first = ret;
}
return ret;
}
//回溯法
int Fibonacci(int n, int a, int b, int count){
if (n == count){
return b;
}
else{
return Fibonacci(n, b, a + b, ++count);
}
}
int Fibonacci_3(int n){
return Fibonacci(n, 0, 1, 1);
}
int main(){
cout << Fibonacci_1(12) << endl;
cout << Fibonacci_2(12) << endl;
cout << Fibonacci_3(12) << endl;
return 0;
}
Fibonacci
最新推荐文章于 2019-09-10 14:07:26 发布