函数返回非

2024-03-29 11:56:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在找下一个帕林罗马号码 当我在返回前打印num时,它会正确打印,但当我返回它时,它不会返回任何值

#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)

Tags: inforifherecoderesnumser
1条回答
网友
1楼 · 发布于 2024-03-29 11:56:46

因为这是一个递归函数,所以您需要确保在完成递归时,返回值并将其传递到递归堆栈中,而这不是这里所发生的情况。
为了确保发生这种情况,您需要确保递归调用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

相关问题 更多 >