我刚刚开始使用递归函数,我必须创建一个接收整数并返回一个只包含偶数的新数字的函数。例如,如果它接收到23456,它应该返回246。这就是我尝试过的:
def newInt(n):
dig = n % 10
if dig % 2 == 1:
return newInt(n//10)
elif dig % 2 == 0:
return str(n) + newInt(n//10)
print(newInt(32))但我得到了以下错误:
RecursionError: maximum recursion depth exceeded in __instancecheck__我该怎么做才能解决这个问题呢?
发布于 2022-05-26 01:41:34
您的问题是,您没有停止递归的条件--每次对newInt的调用都会导致另一个调用。停止的一种方法是检查n是否小于10,然后返回n (如果是偶数)。例如:
def newInt(n):
if n < 10:
return n if n % 2 == 0 else 0
dig = n % 10
if dig % 2 == 1:
return newInt(n//10)
elif dig % 2 == 0:
return newInt(n//10) * 10 + dig注意,我已经修改了函数,使其返回一个整数,而不是一个字符串。
https://stackoverflow.com/questions/72385727
复制相似问题