Ruby Fibonacci不起作用?

时间:2014-05-30 22:08:47

标签: ruby

我试图在Ruby中生成第n个Fibonacci数,这是我的代码:

def fib(n)
  x=1
  y=1
  z=0
  res=0
  while z < n
    z=x+y
    if z%2==0 
      res+=z
      x=y
      y=z
    end
  end
  return res
end

但它导致无限循环。有什么问题?

2 个答案:

答案 0 :(得分:1)

这是因为z的值在第二步后停止变化。

第一步后,z=2x=1y=2。然后,您再次z=x+y,现在z=3,但是从z%2==1开始,您不会更改xy的值,而您再次执行z=2+1并获取z=3

答案 1 :(得分:0)

z似乎只会推进x+y的奇数总和。由于x+y已初始化为2,因此z在整个循环中保持不变。对于任何大于2的n,这是一个无限循环。