python图形化界面开发工具,python如何做图形化界面

大家好,小编来为大家解答以下问题,python图形化界面开发工具,python如何做图形化界面,现在让我们一起来看看吧!

猴子爬山一只顽猴在一座有N级台阶的小山上爬山跳跃。上山时需从山脚至山顶往上跳N级台阶,一步可跳1级,或跳3级,求上山有多少种不同的跳法? (N<50)

问题分析:

每一次都可以选择1,2,3有3种跳法

方法1 直接使用递归

jumpWay = [1, 3]

footstep = int(input())

jumping = 0

#first write

def jump(nowstep, footstep, jumpWay):
    if nowstep == footstep:
        global jumping
        jumping += 1
        return
    elif nowstep > footstep:
        return
    else:
        for i in range(len(jumpWay)):
            jump(nowstep + jumpWay[i], footstep, jumpWay)


jump(0, footstep, jumpWay)

但是这种方式会提示 递归层数过多

想办法对算法进行合理优化,排列组合

方法2 循环全排列

size = int(input())
n3 = size//3
res = 0

# 求阶乘
def jiecheng(n):
    num = 1
    if n==1:
        return 1
    else:
        for i in range(1,n+1):
            num*=i
        return num
        
# 求排列        
def c43(n4,n3):
    # return jiecheng
    # 3!/(4-3)!*3!
    # j3 = jiecheng(3)
    return jiecheng(n4)//(jiecheng(n4-n3)*jiecheng(n3))

# a32不用了
# def a32(n3,n2):
#    return jiecheng(n2)//jiecheng(n3)-jiecheng(n2)

# 循环
for i in range(size+1):
    # i 为有几个 1步的情况
    for j in range(n3+1):
        # j为有 几个 3步的情况
        if (i+j*3) == size:
            # temp 为总数
            temp = j+i
            res+=c43(temp,j)
print(res)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值