initialValues = input('Please enter a space separated set of values for y, h and g(0): ')
values = []
values.append(initialValues)
theValues = []
for item in values:
item = item.split(' ')
for index in range(len(item)):
item[index] = int(item[index])
theValues.append(item)
y = theValues[0][0]
h = theValues[0][1]
g0 = theValues[0][2]
def Sumrecur(y,h,g0):
if y == 0 :
return g0
else:
sum = 0
for k in range(1,y):
sum = sum + Sumrecur(k,h,g0)*h
return sum
Sumrecur(y,h,g0)
这是我目前正在研究的一项功能。我很困惑,因为return sum命令不起作用。代码有什么问题吗?对不起,对你们中的一些人来说可能听起来很傻,但我真的不知道如何解决这个问题。 谢谢!
答案 0 :(得分:1)
一旦你进行了1次递归,你需要多次返回以实际返回值。基本上你已经将值返回到最后一次递归,但这不是你调用的原始值,因此没有输出。也许写入全局变量或打印该值。
答案 1 :(得分:0)
TL; DR:
我会尝试在你的for循环中使用range(0,y)
。
BREAKDOWN:
您的递归取决于y
的值,并且仅在y
等于0时结束。
让我们看看如何使用示例
调用递归第1步
Sumrecur(3,1,1)
会致电Sumrecur(1,1,1)
和Sumrecur(2,1,1)
步骤2a:
Sumrecur(1,1,1)
不调用任何内容
第2b步:
Sumrecur(2,1,1)
来电Sumrecur(1,1,1)
第3步:
Sumrecur(1,1,1)
不调用任何内容
你看到的问题是什么? y的值永远不等于0,因此它永远不会进入
if y == 0 :
return g0
我会尝试在range(0,y)
循环中使用for
。