我研究过递归,尤其是在 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
谢谢
请您参考如下方法:
遵循函数的典型流程。它会调用自己,这会导致一些输出,然后打印一个数字。所以单个数字出现在前面的末尾。要返回结果而不是打印结果,您需要获取递归调用的结果并将当前结果添加到它的末尾。
