我搜索过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)}
答案 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