python递归函数在加法方面是如何工作的?

2024-03-28 13:30:23 发布

您现在位置:Python中文网/ 问答频道 /正文

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

        print(result)

    else:
        result = 0
    return result

print("\n\n Recursion Example results ")

tri_recursion(7)

输出将自己添加所有数字,直到其长度=7。但我不知道这个函数是如何工作的。 我的意思是如果k=tri_递归(7)(7-1=6)。 那么为什么输出中的第一个数字是 1,3,6,10,15,21,

我是编程新手,递归函数的概念一点也不清楚。 有人能解释一下这个代码是如何工作的吗


Tags: 函数returnifexampledef编程数字result
1条回答
网友
1楼 · 发布于 2024-03-28 13:30:23

这里发生了什么

您最初调用k=7的函数

  1. 函数看到给定值k=7为>;0,因此,如果使用6调用,则计算函数结果的7+。 为了确定后者,它用k=6调用自己

  2. 函数看到给定值k=6为>;0,因此,如果使用5调用,则计算函数结果的6+。 为了确定后者,它用k=5调用自己

  3. 函数看到给定值k=5为>;0,因此,如果使用4调用,则计算函数结果的5+。 为了确定后者,它用k=4调用自己

  4. 函数看到给定值k=4为>;0,因此如果使用3调用,则计算函数结果的4+。 为了确定后者,它用k=3调用自己

  5. 函数看到给定值k=3为>;0,因此如果使用2调用,则计算函数结果的3+。 为了确定后者,它用k=2调用自己

  6. 函数看到给定值k=2为>;0,因此,如果使用1调用,则计算函数结果的2+。 为了确定后者,它用k=1调用自己

  7. 函数看到给定值k=1为>;如果使用0调用,则计算函数结果的1+。 为了确定后者,它用k=0调用自己

  8. 函数看到给定值k=0不是>;0,因此返回0

所以

  • 第7点运行的函数计算1+0=1
  • 第6点运行的函数计算2+1=3
  • 第5点运行的函数计算3+3=6
  • 第4点运行的函数计算4+6=10
  • 第3点运行的函数计算5+10=15
  • 第2点运行的函数计算6+15=21
  • 第1点运行的函数计算7+21=28

最后,28由“原始函数调用”返回,但被丢弃。您看到它只是因为函数中的print(result)

与任何其他递归函数调用相比,该原理没有什么不同

相关问题 更多 >