问题描述
一个人爬楼梯,每次只能爬1个或两个台阶,假设有n个台阶,那么这个人有多少种不同的爬楼梯方法
程序如下:
import time
def easy_step(num):
if num > 2:
out_num = easy_step(num-1) + easy_step(num-2)
else:
out_num = num
return out_num
def comp_step(num):
out_num = [0, 1, 2]
for i in range(3, num+1):
out_num.append(out_num[i-1]+out_num[i-2])
return out_num[num]
def count_step(f):
while True:
s = input('请输入台阶数:')
try:
s = int(s)
if s > 0:
time1 = time.clock()
r = f(s)
time2 = time.clock()
use_time = time2 - time1
print('有%s种算法' % r)
print('简单算法耗时:%f秒' % use_time)
break
except Exception:
print('输入错误!')
count_step(easy_step)
count_step(comp_step)
运行结果:
请输入台阶数:15
有987种算法
简单算法耗时:0.000160秒
请输入台阶数:500
有225591516161936330872512695036072072046011324913758190588638866418474627738686883405015987052796968498626种算法
简单算法耗时:0.000111秒