Python问题 - '反向函数调用'

时间:2013-07-15 00:31:13

标签: python

我有一个循环,而不是使用while或for,是一个不断被调用的函数。 (出于各种原因,我必须这样做。)

我处于一个非常有用的地步,在函数期间的某些条件下,跳过其余的代码并继续下一次迭代。

我想知道是否有相当于'continue'的函数,或者是一个'反向函数调用',结束函数..

1 个答案:

答案 0 :(得分:1)

您所描述的内容称为“递归”,您可以通过处理正在执行递归调用的条件来“跳过迭代”。

例如,假设我们必须添加从1到10的所有数字,但跳过数字5.使用循环,这是我们编写解决方案的方式,结果最终在counter变量中:

counter = 0
for n in range(1, 11):
    if n == 5:
        continue
    counter += n

使用递归,上面的代码等同于:

def adder(n):
    if n > 10: # base case of recursion
        return 0
    if n == 5: # recursive call to skip
        return adder(n+1)
    else:      # normal recursive call
        return n + adder(n+1)

如果我们这样称呼它,我们会得到预期的结果:

adder(1)
=> 50

请注意,在我的示例中,case if n == 5充当函数的continue,因为它会跳过当前迭代并跳转到下一次迭代。怎么样?只需通过在递归调用中执行任何操作,只需转到下一个值即可。将此与“正常”递归调用进行比较,我们将n添加到调用结果中。

简单地从函数返回(如注释中所示)与跳过迭代相同,它更类似于“从循环中断”。要“继续循环”,必须再次调用递归,如上所示。