累死青蛙系列――青蛙跳台阶问题

匿名 (未验证) 提交于 2019-12-02 22:56:40

(1)斐波那契数列

f(1) = 1

f(2) = 2

f(n) = f(n-1) + f(n-2)

function Fibonacci(n) {     // write code here     var a=[0,1];     if(n>1){         for(var i=2;i<=n;i++){             a[i]=a[i-1]+a[i-2];         }     }     return a[n]; }

(2)青蛙跳台阶

青蛙每次只能跳1个或2个台阶,有n阶台阶,青蛙有多少种跳法?

这样就将题目转变成斐波那契数列了。

function jumpFloor(number) {     // write code here     if(number<=0){         return -1;     }else if(number==1){         return 1;     }else if(number==2){         return 2;     }else{         return jumpFloor(number-1)+jumpFloor(number-2);     }      }

(3)变态青蛙跳台阶

青蛙每次能跳1个或2个,……n个台阶,有n阶台阶青蛙有多少种跳法?

这题同样可以倒过来考虑

f(n) = f(n-1) + f(n-2) + ……+f(2) +f(1) +f(n-n)

但是这样不容易找到规律。所以我们这次采取从正面开始。

f(1) = 1

f(3) = f(3-1) + f(3-2) + f(3-3) = 2f(2) = 4;

f(4) = f(4-1) + f(4-2) + f(4-3) + f(4-4) =2f(3)

大胆假设一下,f(n) = 2f(n-1) 这样是为了通过递归获取答案

function jumpFloor(number){     if(number==0 || number ==1){         return 1;     }else{         return jumpFloor(number-1)*2;     } }

原文:https://www.cnblogs.com/hiluna/p/9387599.html

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!