我有一个循环,而不是使用while或for,是一个不断被调用的函数。 (出于各种原因,我必须这样做。)
我处于一个非常有用的地步,在函数期间的某些条件下,跳过其余的代码并继续下一次迭代。
我想知道是否有相当于'continue'的函数,或者是一个'反向函数调用',结束函数..
答案 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
添加到调用结果中。
简单地从函数返回(如注释中所示)不与跳过迭代相同,它更类似于“从循环中断”。要“继续循环”,必须再次调用递归,如上所示。