为什么我的返回函数不能正常工作

时间:2017-04-26 10:09:40

标签: python python-3.x recursion return-value

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命令不起作用。代码有什么问题吗?对不起,对你们中的一些人来说可能听起来很傻,但我真的不知道如何解决这个问题。 谢谢!

2 个答案:

答案 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