青蛙跳台階最簡單的遞迴解法

2021-10-18 14:07:25 字數 1099 閱讀 6417

爬樓梯

只有兩種上法,一級或者兩級

每走一步,都會面臨兩種選擇(上一級或者跳兩級),不管做出哪種選擇,都要遞迴把走完這步後的剩餘樓梯階數傳給下一次,繼續面臨兩種選擇

至於有多少種走法,必須是兩種選擇後產生的所有可能的總和

拿個最簡單的3級樓梯:

已知1級樓梯僅剩1種走法,2級樓梯僅剩2種走法,得:

1:第一次先走一級,那麼只剩下兩級,兩級樓梯僅剩兩種走法,所以返回2

2:第一次先走兩級,那麼只剩下一級,一級樓梯僅剩一種走法,所以返回1

所以**樓梯的全部跳法只有:2+1 = 3種,羅列出來:

第一種:1,1,1

第二種:2,1

第三種:1,2

所以思路就清晰了,每次遞迴都分兩種情況減少對應的步長,直到減到2或者1,再直接返回已知的走法,兩種情況加起來,就是n級階梯總的可能走法

公式:0, n<=0;

f(n) =

if(step <=2)

// 遞迴算出當前選擇跳1級的情況

int jump1 =

gugua_jump

(step-1)

;// 遞迴算出當前選擇跳2級的情況

int jump2 =

guagua_jump

(step-2)

;// 返回當前n級樓梯的兩種跳法的總和

return jump1 + jump2;

}main方法呼叫一下:

public

static

void

main

(string[

] args)

throws ioexception

這裡假設一共5級樓梯,按照什麼波的邏輯,5級= 4級+3級 = 5+3 = 8

看結果是不是:

那就對了,還有其他2種解法,聽說效率更優的,以後持續補充~

青蛙跳台階

乙隻青蛙一次可以跳上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階樓梯上...

青蛙跳台階

難易程度 中等 題目描述 乙隻青蛙一次可以跳上1級台階,也可以跳上2級。在不考慮青蛙健康狀況的情況下 求該青蛙跳上乙個n級的台階總共有多少種跳法。思路 在本題的描述中,青蛙的行動只有兩種可能 一次跳乙個台階或者兩個台階,設n階台階的跳法為 f n 如果第一次跳了一階,那麼剩下的n 1階的跳法為f n...