1. 程式人生 > 實用技巧 >青蛙跳臺階

青蛙跳臺階

一隻青蛙一次可以跳上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)