Python - RecursionError:比较错误中超出了最大递归深度[重复]

Posted

技术标签:

【中文标题】Python - RecursionError:比较错误中超出了最大递归深度[重复]【英文标题】:Python - RecursionError: maximum recursion depth exceeded in comparison error [duplicate] 【发布时间】:2018-05-09 00:56:52 【问题描述】:

我为一个简单的任务编写了一个简单的代码,但我不断收到错误消息

RecursionError:比较中超出了最大递归深度

我已经花了很多时间研究它,但似乎无法弄清楚。

def printMultiTable(high):
    i = 1
    while i <= high:
        printMultiTable(i)
        i +=1
printMultiTable(7)

我期待的结果。

【问题讨论】:

看看你的函数,它总是把 i 设置回 1 你的函数非常不完整。鉴于你所拥有的,你希望如何获得输出? print 在哪里? 【参考方案1】:

如果你想通过递归来解决这个问题,那么你必须了解一些递归规则:

第 1 条规则:

您必须始终有一些基本情况,无需递归即可解决。

第 2 条规则:

对于要递归解决的案例,递归调用必须始终是朝着基本案例前进的案例。

这是递归方法的解决方案:

def printMultiTable(high,low,track):
multitable=[]

if track==0:
    return 0
else:
    while high > low:
        multitable.append(high*track)



        high -= 1
    print("multitable of ".format(track))
    print('--------------------------')


    print(multitable[::-1])
    print('--------------------------')

    high=7

    printMultiTable(high,low,track-1)

打印(printMultiTable(7,0,6))

输出:

multitable of 6
--------------------------
[6, 12, 18, 24, 30, 36, 42]
--------------------------
multitable of 5
--------------------------
[5, 10, 15, 20, 25, 30, 35]
--------------------------
multitable of 4
--------------------------
[4, 8, 12, 16, 20, 24, 28]
--------------------------
multitable of 3
--------------------------
[3, 6, 9, 12, 15, 18, 21]
--------------------------
multitable of 2
--------------------------
[2, 4, 6, 8, 10, 12, 14]
--------------------------
multitable of 1
--------------------------
[1, 2, 3, 4, 5, 6, 7]
--------------------------
None

【讨论】:

非常感谢,保罗!这当然解决了我的问题。 @Vondoe79 总是:)【参考方案2】:

您的函数将永远调用自己,因为您总是将 i 设置回 1。

这样的东西不会无限运行:

def printMultiTable(i, high):
    while i <= high:
        i +=1
        printMultiTable(i, high)


printMultiTable(1, 7)

但是,我不确定此函数是否具有您想要的确切行为,因为您不清楚您想要什么行为。这个函数每次都会给i加一个,调用自己直到i &lt;= high为假。希望这就是你想要的。如果没有,请告诉我。

编辑: 现在我看到了你想要的输出是什么。这应该做得很好:

def printMultiTable(low, high): 
    for i in range(low, high + 1):
        for j in range(low, high):
            print i*j, "\t",
        print ""         


printMultiTable(1,7) 

【讨论】:

以上是关于Python - RecursionError:比较错误中超出了最大递归深度[重复]的主要内容,如果未能解决你的问题,请参考以下文章

RecursionError:最大递归深度超出了python属性getter setter [重复]

python --RecursionError: maximum recursion depth exceeded in comparison

python RecursionError: maximum recursion depth exceeded in comparison错误

python RecursionError: maximum recursion depth exceeded in comparison错误

RecursionError:比较中超出了最大递归深度'

RecursionError:超出最大递归深度