這是怎麼回事?
def sum_to_n?(array, n)
for i in array
s = n - i
return true if array.include?(s)
end
false # This will be retuned only when no two numbers are found,whose sum is n
end
puts sum_to_n?([1,2,3,4,5], 9)
puts sum_to_n?([1,2,3,4,5], 12)
# >> true
# >> false
簡單的代碼使用Enumerable#find
:
def sum_to_n?(array, n)
!!array.find{|e| array.include?(n-e)}
end
puts sum_to_n?([1,2,3,4,5], 9)
puts sum_to_n?([1,2,3,4,5], 12)
# >> true
# >> false
更新(按照@盧卡斯Niemier)
def sum_to_n?(array, n)
array.any? { |num| array.include?(n - num) }
end
puts sum_to_n?([1,2,3,4,5], 9)
puts sum_to_n?([1,2,3,4,5], 12)
# >> true
# >> false
但我會Enumerable#find
去,因爲它會停止迭代,一旦找到該物品,Enumerable#any?
就不屬於這種情況。
爲什麼你使用這個邏輯'我!= n - 我'?我很想知道。 –
我對Python有一些想法,但知道Ruby中的語法。實際上,如果我不返回false,我會打印數組中的所有元素。無論如何,根據我的邏輯,第一次測試應該返回true,但由於某種原因並非如此。數組的一些兩個元素可以等於n,那麼方法應該返回true。我在檢查,是否有一些n - i包含在數組中。我!= n - 我不正確,你說得對。 – user2742080
你的方法名稱很混亂,因爲你沒有得到方法中任何東西的總和。不過,你正在獲得這些差異。 – vgoff