【问题标题】:Recursion step by step function call递归一步步函数调用
【发布时间】:2022-12-31 01:43:25
【问题描述】:
def find_highest(lst):
    if len(lst) == 1:
        return lst[0]
    a = lst[0]
    b = find_highest(lst[1:])
    if a > b:
        return a    
    else:
        return b

怎么输出是99?有人可以解释执行的逐步过程吗?

【问题讨论】:

  • 输入是什么?

标签: python function call


【解决方案1】:

尝试添加一些 print 语句,这样您就可以逐步观察发生了什么。在可视化递归函数时,传递一个参数会很有用,该参数告诉您您在调用堆栈中的深度。例如:

def find_highest(lst, depth=0):
    tab = depth * 4 * ' '
    if len(lst) == 1:
        print(f"{tab}find_highest({lst}) -> {lst[0]}")
        return lst[0]

    a = lst[0]
    print(f"{tab}find_highest({lst}) -> max({a}, find_highest({lst[1:]}))")
    b = find_highest(lst[1:], depth+1)

    if a > b:
        print(f"{tab}find_highest({lst}) -> {a}")
        return a    
    else:
        print(f"{tab}find_highest({lst}) -> {b}")
        return b

print(find_highest([10, 20, 99]))

印刷:

find_highest([10, 20, 99]) -> max(10, find_highest([20, 99]))
    find_highest([20, 99]) -> max(20, find_highest([99]))
        find_highest([99]) -> 99
    find_highest([20, 99]) -> 99
find_highest([10, 20, 99]) -> 99
99

【讨论】:

    猜你喜欢
    • 2016-09-21
    • 2017-03-12
    • 2020-09-08
    • 2013-12-07
    • 2017-06-27
    • 2017-06-08
    • 1970-01-01
    • 2019-02-20
    • 2023-03-28
    相关资源
    最近更新 更多