演算法習題 青蛙跳台階

2022-03-31 13:20:38 字數 960 閱讀 1702

習題1、乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。

思路分析:跳上第n級台階的最後一跳只存在兩種情況(跳1級或2級),一種是從第n-1級跳1級到第n級,另一種是從第n-2級跳2級到第n級。假如我們用f(n)代表青蛙跳上乙個n級的台階的跳法總數,則當n要大於2時有f(n) = f(n-1) + f(n-2),原來這是乙個裴波那契數列求和問題,**如下。

public

static

int jump(int n) ;

if (n <= 2)

return jump(n - 1) + jump(n - 2);

}

習題2、乙隻青蛙一次可以跳上任意級的台階。求該青蛙跳上乙個n級的台階總共有多少種跳法。

思路分析:跳上第n級台階的最後一跳存在n種情況(跳1級、或2級、……、或n級),第一種是從第n-1級跳1級到第n級,第二種是從第n-2級跳2級到第n級,第n種是從第0級跳n級到第n級。假如我們用f(n)代表青蛙跳上乙個n級的台階的跳法總數,則f(n) = f(n-1) + f(n-2)+……+f(0)。先通過數學推理得到公式,然後就容易寫**了。

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

>> f(n+1) = f(n) + f(n-1)+……+f(0)

>> f(n+1)-f(n) = (f(n) + f(n-1)+……+f(0)) – (f(n-1) + f(n-2)+……+f(0))

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

public

static

int jump2(int n)

演算法 青蛙跳台階

1.乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。典型的斐波那契數列 2.青蛙跳台階plus版本 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。關於本題,前提是n個台階會有一次n階的跳法。分析如...

青蛙跳台階

乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。解題思路 1 如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 2 假定第一次跳的是2階,那麼剩下的是n 2個台階,跳法是f n 2 3 總跳法為 f n f n...

青蛙跳台階

之前面試遇到了這種題目,不會,後來搜尋了一下,感覺分析的很好 青蛙跳乙個n階的台階,每次可以跳1階或者2階,求跳完n階y有多少種方法。分析 n 1,f n 1 n 2,f n 2 n 3,f n 3 n 4,f n 5 可以發現 f n f n 1 f n 2 由此也可以推想 比如要跳到第4階樓梯上...