如何逃避ruby中的递归方法

时间:2017-10-09 08:03:58

标签: ruby recursion

我创建了一个递归函数,试图解析解析列表中的信息。这有点难以解释,但它就像

在解析维基百科电影页面或演员页面的解析函数中,首先从维基百科演员页面解析电影摄影列表 - >在解析列表上调用相同的函数 - >重复

我设置了一个计算迭代次数的全局变量,但是当我尝试从函数中突破并继续执行下一步时,

if $counter > 10
    return nil
end

但它不会立即结束,因为仍有函数被调用(因为它是递归的)。我尝试使用“abort”但是这个只是终止了程序而不是继续下一个程序。

有没有办法立即停止递归运行并继续下一步而不中止程序?

1 个答案:

答案 0 :(得分:-3)

如果没有更多代码,有点难以回答。但我想你会寻找nextbreak来跳出递归。

next

  

跳转到最内部循环的下一次迭代。如果在块内调用,则终止块的执行(yield或调用返回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