Ruby Euler上的1000位斐波那契误差?
下面是我的代码。它运行。它起作用了。 问题是,前1000位斐波那契数的索引不是4872…而是4871。4872是位置,而不是索引。Euler是否接受了错误的答案,或者他们是否在应该使用位置时使用了单词索引Ruby Euler上的1000位斐波那契误差?,ruby,fibonacci,Ruby,Fibonacci,下面是我的代码。它运行。它起作用了。 问题是,前1000位斐波那契数的索引不是4872…而是4871。4872是位置,而不是索引。Euler是否接受了错误的答案,或者他们是否在应该使用位置时使用了单词索引 def fib_of_a_certain_digit(num) fibs = [1, 1] idx = 1 while true fib = fibs[idx] + fibs[idx-1] fibs << fib idx
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)
特定数字的定义fib(num)
fibs=[1,1]
idx=1
虽然是真的
fib=fibs[idx]+fibs[idx-1]
小谎不,那不是错误
因此,前12个条款将是:
F1=1F2=1
F3=2
…
F11=89
F12=144 注意每个“F”右下角的小下标数字这些是索引。因此它们以1开始索引,因此“位置”和“索引”在这里是等效的。特别是,我们可以看到第一个三位数的斐波那契数在索引12处 您对编程语言和数据类型的选择以及该语言对索引的选择不会覆盖问题陈述中的内容。如果是这样的话,那就有问题了,因为有些编程语言是从1开始索引的
在下面的评论中,您谈到了“常用术语”及其“通常含义”。我相信你已经意识到Euler项目非常数学化,在数学中,这些下标就是索引。例如,见。顺便说一句,all那里的例子都是从1开始索引的(不是0),因为这也是数学中常见的方法。也许他们是从0和1开始的,在这种情况下,他们是从[1,1]开始的。“因此,前12个术语将是:F1=1 F2=1等”也许他们暗示数组的索引是基于1的,而不是基于0的?对不起,他们选择使用一个常用编程术语的单词用于编码术语中通常意义以外的目的,这是我的错吗?他们的选择不是你的错。还有,看看我刚才加的那一段,我说他们的选择不是你的错。你对他们问题的解释确实有误。如果你不同意,请查字典中的“error”和“err”。你问了一个错误,我只是说是你犯了错误。就像我刚才补充的答案一样,这就是它在数学中的含义。这不像是欧拉计划编造的一些不寻常的边缘事物。@Arongodhard这不是一个完整的列表,但我认为它能说明问题