我试图在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
但它导致无限循环。有什么问题?
答案 0 :(得分:1)
这是因为z
的值在第二步后停止变化。
第一步后,z=2
,x=1
和y=2
。然后,您再次z=x+y
,现在z=3
,但是从z%2==1
开始,您不会更改x
和y
的值,而您再次执行z=2+1
并获取z=3
。
答案 1 :(得分:0)
z
似乎只会推进x+y
的奇数总和。由于x+y
已初始化为2,因此z
在整个循环中保持不变。对于任何大于2的n,这是一个无限循环。