我正在尝试通过如下递归函数找到可被2、3和5整除的最小整数:
def recursiva(n):
lista = []
if(n%2==0 and n%3==0 and n%10==0):
lista.append(n)
n = n - 1
recursiva(n)
return min(lista)
recursiva(100)
但是即使对于100之类的小数字,我也会出现堆栈溢出,如错误消息所示:
RecursionError: maximum recursion depth exceeded in comparison
我想知道:
答案 0 :(得分:0)
要解决此问题,请在再次调用recursiva()
之前,检查 n 是否等于或小于0(n<=0
)。没有条件,它不会停止,并且会无限循环。
答案 1 :(得分:0)
在递归函数中,您至少需要2条可能的return语句,其中1条满足某些结束条件并返回答案,而1条返回的是对函数进行了一些修改后的新调用。
此外,对于您的问题,您需要一种将先前调用的结果保存在某处的方法。您可以考虑将成功调用列表作为参数传递给函数。
答案 2 :(得分:0)
我是这样的:
def recursiva(n = 1):
if (n%2==0 and n%3==0 and n%10==0):
return n
else:
return recursiva(n+1)
recursiva()