Python:获取对象的str时超过了最大递归深度,如何解决?

Python:获取对象的str时超过了最大递归深度,如何解决?,python,Python,数字根是数字中所有数字的递归和。给定n,取n的数字之和。如果该值有两位数字,则继续以这种方式减少,直到生成一位数字。当我这样称呼它时: def digital_root(n): if(0<n<10): return n else: list = [int(x) for x in str(n)] return digital_root(sum(list)) digital_root(942) def数字根目录(n):

数字根是数字中所有数字的递归和。给定n,取n的数字之和。如果该值有两位数字,则继续以这种方式减少,直到生成一位数字。当我这样称呼它时:

def digital_root(n):
    if(0<n<10):
        return n
    else:
        list = [int(x) for x in str(n)]
        return digital_root(sum(list))

digital_root(942)
def数字根目录(n):

如果(0将此转换为迭代(或是迭代?)版本非常简单:


将此转换为迭代(或者是迭代?)版本非常简单:


我不能重现这个问题。也就是说,在可能的情况下使用迭代更有效,如Wayne Werner所示

现在,如果你做一点搜索,你会发现你甚至不需要迭代任何东西

def digital_root(n):
    if n<0:
        n = abs(n)
    if n%9==0 and n!=0:
        return 9
    return n%9
def数字根目录(n):

如果n我不能重现这个问题。也就是说,尽可能使用迭代,效率更高,如Wayne Werner所示

现在,如果你做一点搜索,你会发现你甚至不需要迭代任何东西

def digital_root(n):
    if n<0:
        n = abs(n)
    if n%9==0 and n!=0:
        return 9
    return n%9
def数字根目录(n):

如果n你给这个输入什么值?你知道获得相同结果的一个更简单的方法是
n%9
?你可以使用增加递归限制,但是如果你使用非常大的数字,你可能需要重新评估你的算法。数字根(942)无法再现错误。您是否真的在
942
上或在向函数传递其他内容时收到错误?您对此提供了什么值?您知道获得相同结果的一个更简单的方法是
n%9
?您可以使用增加递归限制,但如果使用非常复杂的函数,您可能需要重新评估您的算法大数字。数字根(942)无法再现错误。您真的在
942
上或向函数传递其他内容时收到错误吗?如果(n%9==0和n!=0):返回9,否则返回浮点(n)%9@DarshShukla如果(n%9==0和n!=0),则不需要浮点转换:返回9,否则返回浮点(n)%9@DarshShukla浮点转换是不必要的