我研究了递归,特别是在Python中,并认为我明白了。 我学会了这种形式: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
感谢
//,你说的方式“递归调用对某些东西进行排序,然后停止或”触发器“会使递归崩溃并消耗结果值。”表明你有机会看看递归函数在哪里以及如何破坏。你怎么去检查他们的价值观@ JayJay123? –