1.问题描述
写一个函数输入n,求斐波那契数列的第n项。(来自《剑指offer》)
2.分析
递归有严重的效率问题,会多次的求某一个值的结果。
long long Fibonacci(unsigned int n)
{
if (n == 0 || n == 1)
{
return n;
}
int one = 0;
int two = 1;
int result = 0;
for (int i = 2; i <= n; i++)
{
result = one + two ;
one = two;
two = result;
}
return result;
}
另外fibonacci一些其他的应用
1. 一只青蛙一次可以跳上1级台阶,也可以跳上2级,请问该青蛙上一个n级台阶总共有多少种跳法
青蛙上1级台阶只有一种跳法,上两级台阶有2种跳法,分别为分2次跳和1次跳完。因此我们把跳n级台阶看成n的函数f(n) 跳第一次可以只跳1级那么还需要跳剩下的n-1级台阶,也可以一次跳2级,那么还需要跳剩下的n-2级台阶 f(n)= f(n-1)+f(n-2)。