一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路分析:青蛙跳n 级台阶可以从n-1级台阶跳一级或者从n-2级台阶跳2级到达,假设n级台阶有f(n)种跳法,则f(n)=f(n-1)+f(n-2);
可得出
{ 1, (n=1)
f(n) = { 2, (n=2)
{ f(n-1)+f(n-2) ,(n>2,n为整数)
可以用数组存储从一级到n级的所有情况,最后返回数组最后一项,通过牺牲空间节约了时间。或者数组只保留两项,这两项从[1,2]一直更新到[f(n-1),f(n)]
可以用数组存储从一级到n级的所有情况,最后返回数组最后一项,通过牺牲空间节约了时间。或者数组只保留两项,这两项从[1,2]一直更新到[f(n-1),f(n)]
实现算法如下:
function jumpFloor(number) { var arr=[1,2]; var cup; var cnt = number - 2; if(number<3){ return arr[number-1]; } else{ while(cnt>0){ arr[0] = arr[0] + arr[1]; cup = arr[1]; arr[1] = arr[0]; arr[0] = cup; cnt--; } return arr[1]; } }