蠢叶 2019-10-20 16:07 采纳率: 0%
浏览 243

ping-pong sequence 递归如何优化 python

图片说明

测试数据小一点的话可以出结果,但稍微大一点就不行了,小白求问可以怎么优化程序鸭

```def num_sevens(n):
    if(n//10==0):
        if(n==7):
            return 1
        else:
            return 0
    else:
        if(n%10==7):
            return 1+num_sevens(n//10)
        else:
            return num_sevens(n//10)

def pingpong(n):
    if n == 1:
       return 1
    elif n == 2:
       return 2
    elif (n - 1) % 7 == 0 or num_sevens(n - 1):
       return pingpong(n - 2)
    else:
       return pingpong(n-1)*2-pingpong(n-2)

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-29 21:51
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    def num_sevens(n):
        if (n // 10 == 0):
            if (n == 7):
                return 1
            else:
                return 0
        else:
            if (n % 10 == 7):
                return 1 + num_sevens(n // 10)
            else:
                return num_sevens(n // 10)
    
    
    def pingpong(n):
        if n == 1:
            return 1
        elif n == 2:
            return 2
        elif (n - 1) % 7 == 0 or num_sevens(n - 1):
            return pingpong(n - 2)
        else:
            return pingpong(n - 1) * 2 - pingpong(n - 2)
    
    评论

报告相同问题?