![](/img/trans.png)
[英]How to fill arrays recursively with random numbers and print them recursively?
[英]How to print sum of numbers to n recursively?
我写了一个函数来打印数字总和到 n。
def sumOfDigits(n):
sum = 0
if n < 0:
print("Enter a positive number")
else:
while (n > 0):
sum = sum + n
n -= 1
return sum
print(sumOfDigits(4))
这可以很好地打印结果,但现在我正在尝试递归执行。
def sumOfDigits(n):
assert n >= 0 and int(n) == n, 'The number must be positive integer only'
if n == 0:
return 0
else:
while n > 0:
return sumOfDigits(n) + sumOfDigits(n-1)
print(sumOfDigits(3))
但我收到以下错误:-
assert n>= 0 and int(n) == n, 'The number must be positive integer only'
RecursionError: maximum recursion depth exceeded in comparison
任何帮助将不胜感激。 谢谢你。
在递归中,所有递归调用都必须让您更接近基本情况。 当您调用sumOfDigits(n)
,它只是重复相同的值,因此它会无限递归。
您只需要将当前值添加到递归结果中,而不是两次递归调用。 所以线
return sumOfDigits(n) + sumOfDigits(n-1)
应该只是
return n + sumOfDigits(n-1)
您也不需要while
循环。 递归就是循环。
def sumOfDigits(n):
assert n >= 0 and int(n) == n, 'The number must be positive integer only'
if n == 0:
return 0
else:
return n + sumOfDigits(n-1)
您的while
循环是无限的,因为它永远不会改变n
。
希望这会有所帮助,但 sum 变量在全局范围内。
代码:
total = 0
def recursion(n):
global total
if n-1 > 0:
total += n
return recursion(n-1)
else:
total += n
recursion(4)
print(total)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.