繁体   English   中英

递归函数查找同时被三个数字整除的最小数字

[英]Recursive function to find the smallest number divisible by three numbers simultaneously

我试图通过递归函数找到可被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

我想知道:

  • 我究竟做错了什么?
  • 有什么方法可以使函数寻找整数集中2、3和5可除的最小数字,而不是为每个参数传递固定值?

要解决此问题,请再次调用recursiva() ,然后检查n是否等于或小于0( n<=0 )。 没有条件,它将不会停止,并且会无限循环。

在递归函数中,您至少需要2条可能的return语句,其中1条满足某些结束条件并返回答案,而1条返回的是对函数进行了一些修改后的新调用。

另外,对于您的问题,您需要一种将先前调用的结果保存在某处的方法。 您可以考虑将成功调用列表作为参数传递给函数。

我是这样的:

def recursiva(n = 1):
    if (n%2==0 and n%3==0 and n%10==0):
        return n
    else:
        return recursiva(n+1)
recursiva()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM