0 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)
Run Code Online (Sandbox Code Playgroud)
我明白了:
RuntimeError:获取对象的str时超出了最大递归深度
将它转换为迭代(或者是动态编程?)版本是非常简单的:
def digital_root(n):
str_n = str(n)
while len(str_n) > 1:
n = sum(int(x) for x in str_n)
str_n = str(n)
return n
Run Code Online (Sandbox Code Playgroud)