以下是我的代码.它运行.有用.问题是,第一个1000位斐波那契数的INDEX不是4872 ......它是4871. 4872是POSITION,而不是INDEX.欧拉是否接受了错误的答案,或者他们在使用职位时是否使用了索引这个词?
def fib_of_a_certain_digit(num)
fibs = [1, 1]
idx = 1
while true
fib = fibs[idx] + fibs[idx-1]
fibs << fib
idx += 1
digilength = fib.to_s.split("").length
return "The first #{num} digit Fibonacci number is at index #{idx}, the fibonacci array is #{fibs.length} long" if digilength == num
end
end
puts fib_of_a_certain_digit(3)
puts fib_of_a_certain_digit(1000)
Run Code Online (Sandbox Code Playgroud)
这是输出.前三位Fibonacci数位于索引11,斐波纳契数组为12长.前1000位斐波纳契数位于索引4781,斐波那契数组为4782长
如您所见,控制案例与已知数据匹配.[1,1,2,3,5,8,13,21,34,55,89,144]数组中的最后一个数字是144.它在索引11处,但是是数组中的第12个数字.同样的原则适用于较大的数字(它太大而无法粘贴).它在阵列的最后一个位置(4872)结束,其索引为4871.
为什么没有人注意到这个?