尝试添加一些 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