爬楼梯

1 递归写法,从前向后,缩小问题规模,追问溯源,时间换简单

def climb(n,steps):

    count=0
    if n==0:
        count=1
    elif n>0:
        for step in range(1,steps+1):
            count += climb(n-step,steps)
    return count

print( climb(10,2))


2 循环写法, 空间换时间

def climb2(n,step):
    res=[0 for i in range(n+1)]
    for i in range(n+1):
        for j in range(1,step+1):
            if i==0: res[i+j]=1
            if i+j<n+1:                
                res[i+j] += res[i]
    return res[n]

print(climb2(10,2))
print(res[10])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值