假设你现在正在爬楼梯,楼梯有n级。每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部?
格式:
第一行输入一个数n(n<=50),代表楼梯的级数。
接下来一行输出你的方法总数。
样例1
输入:
5
输出:
8
# 爬楼梯的结果实际上是一个斐波纳契数列
num1 = int(raw_input())
a=1
b=2
if num1==1:
print 1
if num1==2:
print 2
if num1>2:
for i in range(3,num1+1):
a,b=b,a+b
print b
再来一个通用爬楼梯算法.
# coding=utf-8
count = 0
def getCount(stack, remain, limit):
# stack:已经爬过的楼梯,是一个列表,remain:剩下要爬的楼梯阶数,limit:每次可以爬多少阶
global count
for i in range(1, limit + 1):
stack.append(i) # 爬一次
if remain == i:
# 如果要爬的阶数=剩下的阶数,说明已经爬完了
# print stack # 这句打印爬的具体方案
count += 1 # 爬完一次,方案数+1
stack.pop() # 退回爬这次之前
break
else:
getCount(stack, remain - i, limit) # 如果没爬完,接着爬剩下的,
stack.pop() # 剩下的台阶已经爬完,退回到上次爬之前
getCount([], 5, 2) # 爬5个阶梯,每次可以爬1-2.
print count