我有一个循环,而不是使用 while 或 for,是一个不断被调用的函数。(出于各种原因,我必须这样做。)
我正处于非常有用的地步,在函数执行期间的某些条件下,跳过其余代码并继续进行下一次迭代。
我想知道函数是否有等效的“继续”,或者某种“反向函数调用”,结束函数..
我有一个循环,而不是使用 while 或 for,是一个不断被调用的函数。(出于各种原因,我必须这样做。)
我正处于非常有用的地步,在函数执行期间的某些条件下,跳过其余代码并继续进行下一次迭代。
我想知道函数是否有等效的“继续”,或者某种“反向函数调用”,结束函数..
您所描述的称为“递归”,您可以通过处理执行递归调用的条件来“跳过迭代”。
例如,假设我们必须将 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
在调用结果中添加。
简单地从函数返回(如评论中所建议的那样)与跳过迭代不同,它更类似于“从循环中中断”。要“继续循环”,必须再次调用递归,如上所示。