【问题标题】:How python recursive function works in terms of addition? [closed]python递归函数在加法方面如何工作? [关闭]
【发布时间】:2020-08-27 09:36:18
【问题描述】:
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_recursion(7) (7-1 = 6)。 那么为什么输出中的第一个数字是 1、3、6、10、15、21,

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

【问题讨论】:

    标签: python function recursion addition


    【解决方案1】:

    这里发生了什么?

    您最初使用 k = 7 调用该函数。

    1. 函数看到给定的值 k = 7 > 0,因此计算 7 + 如果用 6 调用函数的结果。 为了确定后者,它以 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,因此如果使用 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)

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

    【讨论】:

    • @blogsbarrel 考虑第一个电话,tri_recursion(7)。在处理这个函数调用的过程中,k = 7,所以result = 7 + tri_recursion(6)。为了确定tri_recursion(6) 是什么,使用k = 6 调用函数tri_recursion()。在此过程中,result = 6 + tri_recursion(5) 等等。请注意,result 变量与上一层不同。
    • @blogsbarrel 这是我用要点描述的“链”:在tri_recursive(1) 通话期间,它显示result = 1 + tri_recursive(0)。这评估为1 + 0 = 1。然后,此调用返回到tri_recursive(2) 调用,其中result = 2 + tri_recursive(1) 然后计算为2 + 1 = 3。等等。
    • 谢谢兄弟,你真的帮助了我,感谢你的努力
    猜你喜欢
    • 2021-11-14
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 2012-11-12
    • 1970-01-01
    • 2020-08-18
    相关资源
    最近更新 更多