劍指Offer:跳臺階(10.3)
阿新 • • 發佈:2020-08-12
題目描述:
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。
解題思路:
這是一道經典的遞推題目,你可以想如果青蛙當前在第n級臺階上,那它上一步是在哪裡呢?
顯然,由於它可以跳1級臺階或者2級臺階,所以它上一步必定在第n-1,或者第n-2級臺階,也就是說它跳上n級臺階的跳法數是跳上n-1和跳上n-2級臺階的跳法數之和。
設跳上 級臺階有 種跳法,則它跳上n級的臺階有 種跳法。
然後,我們又思考初始()的情況,跳上1級臺階只有1種跳法,跳上2級臺階有2種跳法,最終我們得到如下的遞推式:
方法一:
public classSolution { public int JumpFloor(int n) { if (n == 1) return 1; if (n == 2) return 2; return JumpFloor(n - 1) + JumpFloor(n - 2); } }
方法二:
public class Solution { public int JumpFloor(int target) { int a = 1, b = 1; for (int i = 1; i < target; i++) { a= a + b; b = a - b; } return a; } }