【发布时间】:2016-07-09 20:25:12
【问题描述】:
我正在编写一个基本的递归函数,它接受一个整数 n,并返回前 n 个倒数的和。输入 2 应该得到 1.5,输入 0 应该返回 0。
sum_to(2) = (1 + 1/2) = 1.5
这是我所拥有的:
def sum_to(n):
if n>0:
return sum_to(1+1/n) # Not sure if this is correct
return 0
但我得到的只是超出了最大递归深度。我知道我可以列出来解决这个问题,但递归真的很有趣,我想找到一个使用它的解决方案。
【问题讨论】:
-
"不确定这是否正确" 你应该这样做。根据您的程序 sum_to(1) 与 1 + sum_to(1) 相同。你不确定这是否正确?
-
这是否与您的问题有关? stackoverflow.com/questions/31323495/…
-
如果你一直加1,n会永远等于0吗?
-
return sum_to(n-1) + 1 / n if n > 0 else 0 -
不要将您的
return 0更改为print 0;现在当 n 达到 0 时,您的函数将返回None并且添加将失败。您需要从每个条件中返回一个数字。 (所以只需撤消该编辑:))
标签: python python-3.x recursion