在此代码段中递归如何工作?

时间:2018-11-26 05:42:15

标签: python recursion

def tri_recursion(k):
    if(k>0):
        result = k+tri_recursion(k-1)
        print(result)
    else:
        result = 0
    return result


tri_recursion(8)

带有参数8的函数的输出

1
3
6
10
15
21
28
36

2 个答案:

答案 0 :(得分:2)

在代码的开头,我们有一个函数。它是def或以其他方式称为define。它的变量为k。如果您考虑一下,它就像代数。 f(x)。示例中的f或tri_recursion是函数的名称,示例中的x或tri_recursion(k)中的k。现在我们知道了,让我们看一下其余的代码。下一部分具有ifelse语句。这解释说,如果k大于0,那么它将有另一个名为result的变量,即equalktri_recursion减1。然后将打印结果。如果if语句中未满足要求,它将下移到else statement。它说结果等于0。然后最后,它将return的结果值。 Return仅在函数中使用。

  

这就是它递增的方式

1
3 Increase by 2
6 Increase by 3
10 Increase by 4
15 Increase by 5
21 Increase by 6
28 Increase by 7
36 Increase by 8

希望这会有所帮助!

答案 1 :(得分:1)

这是一个自下而上的递归。 它将首先一直下降到tri_recursion(0),然后将开始建立更大的答案,直到达到8。所以

tri_recursion(0)= 0

这是不打印。从这里开始,所有内容都会被打印出来,并生成该列表。

tri_recursion(1)= 1 + tri_recursion(0)= 1

tri_recursion(2)= 2 + tri_recursion(1)= 3

tri_recursion(3)= 3 + tri_recursion(2)= 6

tri_recursion(4)= 4 + tri_recursion(3)= 10

tri_recursion(5)= 5 + tri_recursion(4)= 15

tri_recursion(6)= 6 + tri_recursion(5)= 21

tri_recursion(7)= 7 + tri_recursion(6)= 28

tri_recursion(8)= 8 + tri_recursion(7)= 36

希望这对您有用!