gpt4 book ai didi

Python 递归行为

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:32 25 4
gpt4 key购买 nike

我研究过递归,尤其是在 Python 中,我想我明白了。我学会了这种形式:

def f_Listsum(numList):
if len(numList) == 1:
return numList[0] ## Triggers the unwinding of the recursion stack
else:
return numList[0] + f_Listsum(numList[1:]) ## Winds up the recursion stack with a shorter and shorter slice of org. list.

我明白了。递归调用有点“风起云涌”,然后停止或“触发”导致递归崩溃并消耗结果值。

但是我今天遇到了这个:

def f_DecToBinary(v_Num):
if v_Num > 1:
f_DecToBinary(v_Num // 2)
print(v_Num % 2,end = '')

我想用返回的字符串或 INT 列表替换函数的“打印”,但我无法让它工作,因为我不明白这种递归是如何运作的。我看到它每次都调用自己,然后在 v_Num == 1 或更小时启动崩溃,但它崩溃到“if”语句之外,然后我迷路了。当我尝试从折叠中组装 STR 或 LIST 而不是打印它时,我出错或只返回最后一个数字。

我的问题是:f_DecToBinary 如何工作/发挥作用,以及如何将输出捕获到字符串中?

一些例子:

print(f_Listsum([1,3,5,7,9])) ## 25
print()
f_DecToBinary(15) ## 1111

谢谢

最佳答案

遵循函数的典型流程。它会调用自己,这会导致一些输出,然后打印一个数字。所以单个数字出现在前面的末尾。要返回结果而不是打印结果,您需要获取递归调用的结果并将当前结果添加到它的末尾。

关于Python 递归行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30582138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com