def sum_it(n,y):
if n ==0:
return y
else:
return sum_it(n-1,n+y)
sum_it(3,4)的必需输出,即(3 + 2 + 1)+4必须为10 但获得的输出是5
请问退货的实际运作方式是什么?
答案 0 :(得分:0)
如果您打算对(3 + 2 + 1)+ 4求和,则此代码将起作用。
def sum_it(n,y):
if( n == 1):
return y + 1
else:
return(n + sum_it(n-1,y))
例如,sum_it(3,4)
的工作方式如下
sum_it(3,4) returns 3 + sum_it(2,4)
sum_it(2,4) returns 2 + sum_it(1,4)
sum_it(1,4) returns 1 + 4
这是
sum_it(3,4) returns 3 + 2 + 1 + 4
答案 1 :(得分:0)
虽然还不清楚,但调用sum_it(n,y)
时似乎需要的是1到n
加上y
的自然数之和。
此初始和也称为“第n个”三角数。
如果是这种情况,您实际上不需要递归:
def sum_it(n,y):
return (n*(n+1))//2 + y
如果必须进行递归:
def sum_it(n,y):
if (n > 1):
return n + sum_it(n-1,y)
return n + y
随时询问是否还有疑问。