0

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

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

我想知道函数是否有等效的“继续”,或者某种“反向函数调用”,结束函数..

4

1 回答 1

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

请注意,在我的示例中,caseif n == 5充当continue函数的 a,因为它跳过当前迭代并跳转到下一个迭代。如何?只需在递归调用中不做任何事情,只需转到下一个值。将此与“正常”递归调用进行比较,我们n在调用结果中添加。

简单地从函数返回(如评论中所建议的那样)跳过迭代不同,它更类似于“从循环中中断”。要“继续循环”,必须再次调用递归,如上所示。

于 2013-07-15T00:33:15.990 回答