Fibonacci序列的Ruby整数和

时间:2016-07-05 22:12:42

标签: ruby recursion fibonacci

我搜索过Stack Overflow并没有找到我的问题,所以我认为发布是安全的。我正在编写一段标准代码,用于打印Fibonacci序列的前10个整数,然后将前10个整数相加并打印总和。我编写的代码基本上可以工作,但我正在尝试在底部组合map和inject方法以使代码更有效。任何意见都将不胜感激。

  def fib(n)
      return 1 if n <= 2

      fib_index = 3
      a, b = 1, 1

      while fib_index <= n
        c = a + b
        a = b
        b = c
        fib_index += 1
      end
    c
  end

p (1..10).map {|i| fib(i)}
p (1..10).inject {|sum, i| sum + fib(i)}

我也对使用递归的方法感兴趣:

 def fibonacci( n )
    return  n  if n <= 1
    fibonacci( n - 1 ) + fibonacci( n - 2 )
  end
  p ( 1..10 ).map {|i| fibonacci(i)}
  p ( 1..10 ).inject {|sum, i| sum + fibonacci(i)}

1 个答案:

答案 0 :(得分:1)

puts "Total: %i" %
  ((1..10).inject(0) do |t,i|
    f = fib(i)
    puts "%s: %s" % [i.to_s.rjust(2), f.to_s.rjust(3)]
    t + f
  end)
 1:   1
 2:   1
 3:   2
 4:   3
 5:   5
 6:   8
 7:  13
 8:  21
 9:  34
10:  55
Total: 143