函数返回无

时间:2019-05-03 14:54:41

标签: python recursion

我正试图找到下一个pallindrome号 当我在返回之前打印num时可以正确打印,但是当我返回时,它返回None

#Code starts here
def palindrome(num):
    flag=1
    copy = num
    num =num+1
    if(flag==1):
        res = [int(x) for x in str(num)]
        ser = [int(x) for x in str(num)]
        ser.reverse()
        if(res==ser):
            flag = 0
            print(num,type(num))
            return num
        else:
            palindrome(num)

a = palindrome(22)
print(a)

1 个答案:

答案 0 :(得分:-1)

由于这是一个递归函数,因此您需要确保递归完成后,将返回值并将其沿递归堆栈向上传播,这不是这里发生的情况。
为确保这种情况发生,您需要确保您的递归调用palindrome(num)也通过执行return palindrome(num)而返回,这应该可以解决问题

def palindrome(num):
    flag=1
    copy = num
    num =num+1
    if(flag==1):
        res = [int(x) for x in str(num)]
        ser = [int(x) for x in str(num)]
        ser.reverse()
        if(res==ser):
            return num
        else:
            #We want to return from the recursive function as well
            return palindrome(num)

输出将是

print(palindrome(46))
#55
print(palindrome(64))
#66
print(palindrome(97))
#99