Skip to main content
 首页 » 编程设计

Python 递归行为

2025年05月04日61开发

我研究过递归,尤其是在 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 

谢谢

请您参考如下方法:

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