def ad(a):
return a+ad(a+1) if a<10 else return a
ad(1)
返回表明无效语法的错误 有什么想法吗?
答案 0 :(得分:1)
def ad(a):
return a+ad(a+1) if a<10 else a
ad(1)
您的代码不起作用,因为您已在return语句中编写了return语句。
我的代码的解释非常简单:
当a达到10时,返回10,否则返回其数字和ad(下一个数字)的总和。
a(10) = 10
a(9) = 9 + a(10) = 9 + 10 = 19
a(8) = 8 + a(9) = 8 + 19 = 27
...
a(1) = 1 + a(2) = 1 + 54 = 55
答案 1 :(得分:0)
您有错别字。
def ad(a):
return a+ad(a+1) if a<10 else ad(1)
但这也是逻辑错误。
更新:可能您期望这样:
def ad(a):
return a + ad(a + 1) if a < 10 else 1
答案 2 :(得分:0)
您问我们是否有任何想法。我的想法是,编写仅适用于一般问题的一种情况的函数没有多大意义。如果您只计算10,则最好预先计算答案并将其连线返回55。
我建议采用一种更通用的实现,该实现计算从传递的参数到零的总和,或者如果它为负,则仅返回该参数:
def sum_to(x):
return x + sum_to(x-1) if x > 1 else x
print(sum_to(0)) # => 0
print(sum_to(10)) # => 55
print(sum_to(20)) # => 210
print(sum_to(-10)) # => -10
(尽管实际上,我将使用直接计算公式x * (x + 1) / 2
而不是递归。)