【发布时间】:2013-10-29 02:24:03
【问题描述】:
我试图找出 n 是否作为传递数组中任意两个数字的总和存在,如果返回 true 否则 false,我的代码的问题是 inject 没有像我一样迭代想要它。我做错了什么?
def sum_to_n?(array,n)
array.each do |i|
array.inject(i) do |memo,var|
if memo + var == n
return true
else
return false
end
end
end
end
puts sum_to_n?([1,2,3,4,5],9)
【问题讨论】:
-
会发生什么,您希望发生什么?
-
你
return false如果 memo + var != n 立即。这意味着除非第一个匹配项总和为 n,否则您的方法总是返回 false。此外,您的注入循环不会像您认为的那样做。 -
@AndrewMarshall 它没有迭代,我希望它修改以便它可以迭代
-
@HunterMcMillen 是的,似乎是这样