Ruby返回语句不工作
我一直在尝试制作一个可以找到kevin bacon的图形数据结构。我的返回声明不起作用,我想知道可能是什么问题。这是我的代码,感谢您提前提供的帮助:Ruby返回语句不工作,ruby,recursion,data-structures,graph,return,Ruby,Recursion,Data Structures,Graph,Return,我一直在尝试制作一个可以找到kevin bacon的图形数据结构。我的返回声明不起作用,我想知道可能是什么问题。这是我的代码,感谢您提前提供的帮助: require_relative "Node" $films = [] $actors = [] def find_kevin_bacon(node, start) $actors << start.name if start.name == "Kevin Bacon" puts "YES!" return
require_relative "Node"
$films = []
$actors = []
def find_kevin_bacon(node, start)
$actors << start.name
if start.name == "Kevin Bacon"
puts "YES!"
return $films
end
if start.name != "Kevin Bacon"
puts "NO!"
start.film_actor_hash.each do |movie, actors|
if actors.include?(node)
puts "Its Him!"
$films << movie
find_kevin_bacon(node,node)
end
end
start.film_actor_hash.each do |movie, actors|
if $films.include?(movie) == false
actors.each do |act|
if $actors.include?(act) == false
$films << movie
find_kevin_bacon(node, act)
end
end
end
end
end
$films
end
因此,代码表明“Kevin Bacon”包含在一个nodes actors数组中,但它并没有结束继续进行的方法。再次感谢您的帮助 在递归方法中,需要有一个“基本情况”——它不触发递归调用,而是返回一些内容。一种方法是:
NO!
NO!
NO!
NO!
Its Him!
YES!
NO!
NO!
NO!
NO!
NO!
Chappie
X2
Robots
Footloose
Robots
X2
Chappie
Lion
Bewitched
$films
。实际上,这是一种表示迭代没有找到解决方案的方法find\u kevin\u bacon(节点,节点)
或find\u kevin\u bacon(节点,动作)
的地方,请执行以下操作:
result = find_kevin_bacon(node, node) # or node, act
return result if result
第二行不仅会停止循环,还会从整个方法返回我使用了你建议的第二个选项,它起了作用,所以谢谢你。不过我很好奇,所以我的理解是,如果返回结果if result的格式是return“code”if“condition”。那么“条件”如何等于true呢?通常情况下,您不需要比较if语句中的某些内容来获得布尔值true或false吗?该列表不是两个选项。这两部分都是必要的。