而真实与时间(idx +计数)< arr.size

时间:2015-04-29 22:01:50

标签: ruby arrays while-loop

我正在学习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;循环赢了循环。有谁能解释为什么?谢谢。

0 个答案:

没有答案