我创建了一个递归函数,它试图解析解析列表中的信息。这有点难以解释,但它类似于
在解析维基百科电影页面或演员页面的解析函数中,首先从维基百科演员页面解析电影列表 ->在解析的列表上调用相同的函数 ->重复
我设置了一个全局变量来计算迭代次数,但是当我尝试脱离函数并通过执行继续下一步时,
if $counter > 10
return nil
end
但它不会立即结束,因为仍然有函数要调用 left(因为它是递归的)。我尝试使用"中止",但这个只是终止了程序,而不是继续下一个程序。
有没有办法在不中止程序的情况下立即停止递归运行并继续下一步?
没有更多代码有点难以回答。但我想你正在寻找next
或break
来跳出递归性。
next
跳转到最内部循环的下一个迭代。如果在块内调用,则终止块的执行(收益率或调用返回 nil)。
for i in 0..5
if i < 2 then
next
end
puts "Value of local variable is #{i}"
end
结果:
- 局部变量的值为 2
- 局部变量的值为 3
- 局部变量的值为 4
- 局部变量的值为 5
break
终止最内部的循环。如果在块中调用具有关联块的方法,则终止该方法(该方法返回 nil)。
for i in 0..5
if i > 2 then
break
end
puts "Value of local variable is #{i}"
end
结果:
- 局部变量的值为 0
- 局部变量的值为 1
- 局部变量的值为 2