4

入力として整数の配列を取り、その積を返すメソッドを作成しようとしています。例えば:

product([1,2,3])    # returns 6

Array#eachこれは、inject メソッドではなく使用する必要があります。これは私が思いついたものですが、間違っているようです:

def product(array)
  final = 0.0
  array.each do |i|
    final *= i
  end
  return final
end

また、このメソッドを変更して、配列内のすべての奇数整数の積を返すにはどうすればよいですか?

product([1,2,3])     # returns 3, because 2 is even

product([0,-1,-10])  # returns -1, because 0 and -10 are even
4

4 に答える 4

10

Ramon が言ったように、final を 1.0 に初期化するだけです。

def product(array)
  final = 1.0
  array.each { |i| final *= i }
  final
end

ただし、慣用的な Ruby では次のようになります。

[1, 2, 3].inject(:*)
于 2012-09-02T22:43:40.710 に答える
4
def find_product(x)
  return x.inject(&:*)
end

x = [5, 6, 7, 10, 15, 18, 32]

find_product(x)
于 2017-03-17T16:54:04.883 に答える
0
def product(array)
  final = 1.0
  array.each do |i|
    final *= i
  end
  final
end
于 2012-09-02T22:43:56.933 に答える