斐波那契序列:ruby-each-method-nil-can';不要被强迫

斐波那契序列:ruby-each-method-nil-can';不要被强迫,ruby,indexing,each,Ruby,Indexing,Each,为了(1)在一个数组中生成一个Fibonacci序列,直到一个特定的索引值,然后(2)返回该序列中给定索引的所有值的乘积,我将以下方法组合在一起 当我将master_num值增加到4以上时,我的问题似乎就出现了。在此之前,序列生成和产品方法都有效。我很确定我的问题与我头脑中关于Ruby如何索引序列数组的错误有关 require 'pry' #optional, i use pry to debug master_num = 5 def gen_fib_sequence_up_to_inde

为了(1)在一个数组中生成一个Fibonacci序列,直到一个特定的索引值,然后(2)返回该序列中给定索引的所有值的乘积,我将以下方法组合在一起

当我将master_num值增加到4以上时,我的问题似乎就出现了。在此之前,序列生成和产品方法都有效。我很确定我的问题与我头脑中关于Ruby如何索引序列数组的错误有关

require 'pry'  #optional, i use pry to debug

master_num = 5

def gen_fib_sequence_up_to_index num
  rec_gen_fib_values num, []
end

def rec_gen_fib_values num, full_array
  start_array = [1,1]
  count = 0

  if num < start_array.size
    num
  end

  until start_array.size == num
    next_element = start_array[count] + start_array[count + 1]
    start_array.push(next_element)
    count += 1
  end
  return start_array
end

p gen_fib_sequence_up_to_index master_num

def fib_sequence_product sequence_array
  product = 1
  sequence_array.each do |i|
    product = product * sequence_array[i]
    #binding.pry
  end
  product
end

p fib_sequence_product gen_fib_sequence_up_to_index master_num
require'pry'#可选,我使用pry进行调试
master_num=5
def gen_fib_序列_up_to_index num
rec_gen_fib_值num,[]
结束
def rec_gen_fib_values num,完整数组
起始数组=[1,1]
计数=0
如果num
非常感谢您的评论和建议

def fib_sequence_product sequence_array
  product = 1
  sequence_array.each do |i|
    product = product * sequence_array[i]
    #binding.pry
  end
  product
end
在块中,
i
不是索引,而是实际值。这应该起作用:

def fib_sequence_product sequence_array
  product = 1
  sequence_array.each do |i|
    product = product * i # or product *= i or ...
  end
  product
end
用斐波那契数生成数组和计算乘积都可以完成