在Fibonacci序列中,是fib(0)0还是1?

Alg*_*fic 25 fibonacci

我正在做一个主题的任务是fib(0)被定义为= 1.但那不可能是正确的?fib(0)是0?

Program with fib(0) = 1; spits out fib(4) = 5
Program with fib(0) = 0; spits out fib(3) = 3
Run Code Online (Sandbox Code Playgroud)

什么是正确的定义?

Dal*_*ann 29

Fib(0)= 1的定义称为组合定义,Fib(0)= 0是经典定义.两者都在Fibonacci Quarterly中使用,尽管使用组合定义的作者需要添加一个解释句子.真实计数中的Benjamin和Quinn使用f_n表示第n个组合Fibonacci数,使用F_n表示第n个经典Fibonacci数.组合定义很好,对于计算诸如"有多少种方式可以走n步,一次采取一个或两个步骤?"这样的问题并不奇怪.当n为0时,有一种方法可以做到,而不是零方式.

  • `Fibonacci Quarterly`?我必须订阅!:-) (9认同)

Nol*_*rin 20

你说的没错.所述斐波那契序列与种子值定义fib(0) = 0fib(1) = 1.这是序列其余部分正确的要求.

唯一fib(0) = 1可行的条件是,如果您定义了"基于-1的计数系统"(与通常的基于0和基于1的约定相反).但这很古怪,我相信你同意.

  • 换句话说,他的序列被一个索引偏移. (3认同)

Pas*_*ent 10

来自维基百科上的Fibonacci数字条目:

在数学中,斐波纳契数是以下数字序列:

替代文字

根据定义,前两个斐波纳契数是0和1,每个剩余数是前两个的总和.一些来源省略了初始0,而是以两个1开始序列.

在数学术语中,斐波纳契数的序列Fn由递归关系定义

替代文字

有种子价值

替代文字

  • 稍微强调一下:"有些来源省略了初始0,而是以两个1开始序列" (7认同)

小智 7

你不可能拥有零只兔子,从而产生一对,而“一年内可以产生多少对兔子,从一对开始,从第二个月开始每月繁殖”是斐波那契最初的问题。


Zed*_*Zed 6

根据Fibonacci序列的定义,您可以生成用于定义第n个元素的闭合形式:

F(n) = ( f^n - (1-f)^n ) / sqrt(5),
where f = (1 + sqrt(5)) / 2 [the golden ratio]
Run Code Online (Sandbox Code Playgroud)

对于n = 0,它显然是0:

F(0) = (1 - 1) / sqrt(5) = 0.
Run Code Online (Sandbox Code Playgroud)

  • 这是一个解释,尽管是一个迂回的解释.它首先是定义它的种子. (3认同)
  • @Noldorin当然你可以用不同的方式定义种子,但是很多好的定理会变成假的,比如这个.顺便说一句,我最喜欢的是gcd(F_m,F_n)= F_gcd(m,n). (2认同)

Kyl*_*ney 6

http://en.wikipedia.org/wiki/Fibonacci_number

斐波那契本人从1开始而不是从0开始。重要的是要认识到一个人的观点并非不可改变的事实,值得考虑的是,您不一定比创建该序列的人了解得更多。我认为以0开头的序列是很好的,只要您不那样做是一种且唯一的绝对正确的处理方式,因为“索引0”处的数字基本上是模棱两可的,应始终明确地进行通信。

“指数”问题仅适用于我们,而不适用于斐波那契。因此,如果我们想使用他的起始编号并且使用基于0的索引,则将其起始编号放在索引0处,或者如果我们使用基于1的索引,则将其起始编号放在索引1中。 。

而且由于确实有可能继续向左排序,因此也使得从0开始完全是任意的。为什么不从-1开始并转到-1、1、0、1、1、2 ...?

  • 我的观点是,如果您可以接受 1 作为可能是序列中的第一个数字,并且您使用 0 作为序列的第一个索引,那么说“F(0) = 1”是有道理的。我的观点还在于,有多种方法可以做到这一点,因此最好弄清楚您使用的是哪个版本,而不是坚持只有一种方法。 (3认同)