斐波那契函数的应用

简介:   题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙上一次n级的台阶总共有多少种跳法? 分析:首先考虑最简单的额情况。如果只有1级台阶,那显然只有一种跳法;如果有2级台阶,那就有两种跳法;跳一级再跳一级;一次性跳到第2级;   接下来讨论一般情况,把n级台阶时的跳法看成是n的函数;记作f(n)。

  题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙上一次n级的台阶总共有多少种跳法?

分析:首先考虑最简单的额情况。如果只有1级台阶,那显然只有一种跳法;如果有2级台阶,那就有两种跳法;跳一级再跳一级;一次性跳到第2级;

  接下来讨论一般情况,把n级台阶时的跳法看成是n的函数;记作f(n)。当n > 2时,第一次跳的时候有两种不同的选择:一是第一次只跳1级,此时跳法数目等于后面剩下的n-1级台阶的数目;即为f(n-1); 另一种选择是第一次跳2级,此时跳法数目等于后面剩下的n-2级数台阶数目,即为f(n-2);因此n级台阶的不同跳法的总数f(n)=f(n-1)+f(n-2).

分析到这里,不难看出这实际就是斐波那契数列了;

 1 long long Fibonacci(unsigned n)
 2 {
 3     int result[2] = {0, 1}; 
 4     if(n<2)
 5     {   
 6         return result[n];
 7     }   
 8 
 9     long long fibNMinusOne = 0;
10     long long fibNMinusTwo = 1;
11 
12     long long fibN = 0;
13     for(unsigned int i=2;i<=n;++i)
14     {   
15         fibN = fibNMinusOne + fibNMinusTwo;
16         fibNMinusTwo = fibNMinusOne;
17         fibNMinusOne = fibN;
18     }   
19     return fibN;
20 }
21 ~     

 

相关文章
|
4月前
|
Java C++
简单斐波那契
简单斐波那契
71 0
|
3月前
函数\递归函数求阶乘
函数\递归函数求阶乘
25 3
|
3月前
|
算法 C语言
汉诺塔问题(函数递归)
汉诺塔问题(函数递归)
25 0
|
4月前
斐波那契(快速矩阵幂)
斐波那契(快速矩阵幂)
26 0
|
4月前
|
机器学习/深度学习 算法
函数递推式
函数递推式
63 0
|
4月前
|
机器学习/深度学习
利用函数递归求汉诺塔问题
利用函数递归求汉诺塔问题
44 0
|
9月前
|
算法 测试技术 C#
C++二分查找算法:阶乘函数后 K 个零
C++二分查找算法:阶乘函数后 K 个零
|
机器学习/深度学习 算法
使用递归方法和for循环方法求阶乘
使用递归方法和for循环方法求阶乘
135 0