我正在学习Ruby并且遇到了这个问题的问题:
提示:使用Ruby语言,让函数ArrayAdditionI(arr)获取存储在arr中的数字数组,如果数组中的任何数字组合可以添加到数组中的最大数字,则返回字符串true ,否则返回字符串false。例如:如果arr包含[4,6,23,10,1,3],则输出应返回true,因为4 + 6 + 10 + 3 = 23.数组不会为空,不包含所有相同的元素,并且可能包含负数。
我的回答如下:
def ArrayAdditionI(arr)
largest_num = nil
arr.each do |element|
if largest_num == nil || element > largest_num
largest_num = element
end
end
arr = arr - [largest_num]
idx=0
count = 1
while (idx+count) < arr.size # <==== this line
puts idx+count
puts arr.size
count = 1
result = arr[idx]
while idx + count < arr.size
if result + arr[idx+count] == largest_num
return true
else
result = result + arr[idx+count]
count+=1
end
end
idx+=1
end
false
end
除非我将行true
更改为[3,5,-1,8,12]
,否则代码不会为while (idx+count) < arr.size
返回正确的输出while true
。否则,我的代码在那个&#34;而&#34;循环赢了循环。有谁能解释为什么?谢谢。