青蛙跳臺階
阿新 • • 發佈:2020-12-16
一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
# 解法一:遞迴思想 # 如果當前跳了一階,還剩餘n-1階 # 如果當前跳了兩階,還剩餘n-2階 # 分別對n-1階與n-2階求次數,再相加 def jumpFloor(number): if number in (1, 2): return number return jumpFloor(number-1)+jumpFloor(number-2) a = jumpFloor(10) print(a) # 解法二:迴圈實現,避免階數過大造成時間超限 def jumpFloor(number): if number == 1 or number == 2: return number n, m = 1, 2 for i in range(number-2): result = m + n n, m = m, result return result a = jumpFloor(10) print(a) # 解法三:公式 # 設n級臺階,跳了z次,x次跳一階,y次跳兩階。 # >>> z = x + y # >>> n = 2*x + y # @param {integer} n # @return {integer} def climbStairs(n): def fact(n): result=1 for i in range(1,n+1): result*=i return result total=0 # for i in range(n/2+1): # float不能作為range的引數 for i in range(n//2+1): total+=fact(i+n-2*i)/fact(i)/fact(n-2*i) return total a = climbStairs(10) print(a)