【发布时间】:2018-02-27 00:26:14
【问题描述】:
我有一些递归调用自身的教科书代码。我不明白程序流程。这是代码:
def Recur_Factorial_Data(DataArray):
numbers = list(DataArray)
num_counter = 0
list_of_results = []
for num_float in numbers:
n = int(num_float)
1. result = Recur_Factorial(n)
list_of_results.append(result)
def Recur_Factorial(num):
if num == 1:
2. return num
else:
result = num*Recur_Factorial(num-1)
3. return result
if num < 0:
return -1
elif num == 0:
return 0
else:
return 0
在 Recur_Factorial_Data 中,我遍历数据元素并调用 Recur_Factorial,它将其值返回给调用函数 (Recur_Factorial_Data)。我希望标记为 2(“return num”)和 3(“return result”)的行总是将一个值返回给调用函数,但事实并非如此。例如,当初始值(来自数组 DataArray)为 11 时,该函数重复调用自身,直到 num 为 1;此时,程序落到标记为 2 的行,但它不会循环回到标记为 1 的行。相反,它落到下一行。在标记为 3 的行上也发生了同样的情况——我希望它将结果返回给调用函数,但它在某些情况下会这样做,而在其他情况下则不会。
我希望这是足够的描述来理解我的问题——我只是不知道为什么每次返回都不会循环返回以将结果返回给调用函数。
编辑:Understanding how recursive functions work 的问题非常有帮助,我推荐给任何对递归感兴趣的人。我的问题有点不同——我是在调用递归函数的 Python 代码的程序流上下文中提出的。
【问题讨论】: