在递归方面我是个新手(python,哈哈),所以我想尝试一下代码战争问题(https://www.codewars.com/kata/541c8630095125aba6000c00/train/python)
我非常困惑为什么中断会被忽略,而递归会继续
def digital_root(n):
x = list(str(n))
z = 0
while True:
for i in range(0, len(x)):
x[i] = int(x[i])
for i in x:
z = i + z
if z < 10:
break
elif z >= 10:
digital_root(z)
return z
print(digital_root(942))
递归调用自身后,它将丢弃返回值,因此
z
和x
保持不变。将递归调用更改为:这样递归就结束了。事实上,
while
循环不应执行多次,因此您可以只执行以下操作:或者,如果您希望完全消除递归,您真正需要的是以下内容(包括一些额外的简化):
相关问题 更多 >
编程相关推荐