您的位置:首页 > 其它

斐波那契数列

2010-06-28 19:28 281 查看
斐波那契数列(
Fibonacci Sequence
),又称为黄金分割数列。在数学上,斐波那契数列是以递归的方法来定义:

F0
= 0

F1
= 1

Fn
= Fn - 1
+
Fn - 2

用文字来说,就是斐波那契数列由
0

1
开始,之后的斐波那契数就由之前的两数相加。首几个斐波那契数是:
0

1

1

2

3

5

8

13

21

34

55

89

144

233

377

610

987

1597

2584

4181

6765

10946

………………

特别指出:
0
不是第一项,而是第零项。

源起

根据高德纳(
Donald Ervin Knuth
)的《计算机程序设计艺术》(
The Art of Computer Programming
),
1150
年印度数学家
Gopala
和金月在研究箱子包装物件长阔刚好为
1

2
的可行方法数目时,首先描述这个数列。
在西方,最先研究这个数列的人是比萨的列奥那多(又名费波那西),他描述兔子生长的数目时用上了这数列。

第一个月有一对刚诞生的兔子

第二个月之后它们可以生育

每月每对可生育的兔子会诞生下一对新兔子

兔子永不死去

假设在
n
月有新生及可生育的兔子总共
a
对,
n+1
月就总共有
b
对。在
n+2
月必定总共有
a+b
对:
因为在

n+2
月的时候,所有在
n
月就已存在的
a
对兔子皆已可以生育并诞下
a
对后代;同时在前一月
(n+1

)

b
对兔子中,在当月属于新诞生的兔子尚不能生育。

计算并显示前

20



Fibonacci



实现思路

1.

定义变量
c
表示当前的
Fibonacci
数,
b
表示前一个
Fibonacci
数,
a
表示前两个
Fibonacci
数。

2.

求出当前的
Fibonacci
数,即
c
的值
– c = b + a


3.

为了继续求下一个
Fibonacci
数,需要修改
b

a
的值,即
a = b

b = c


实现步骤

// TwentyFibonacci.cs

using System;

public class
TwentyFibonacci{

public static void Main(){

int a = 1, b = 1, c;

Console.Write(a + "/t" + b);

for(int i = 1; i <= 18; i++){

c = a + b;

Console.Write("/t" + c);

a = b;

b = c;

}

Console.WriteLine();

}

}

反费波那西数列

反费波那西数列的递归公式:
Gn
+ 2 = Gn
? Gn + 1

如果它以
1

-1
,之后的数是:
1

-1

2

-3

5

-8

...

即是
F2n + 1
= G2n + 1
,F2n
= ? G2n

显示前

20

个反

Fibonacci

数的程序

实现思路

4.

定义变量
c
表示当前的反
Fibonacci
数,
b
表示前一个反
Fibonacci
数,
a
表示前两个反
Fibonacci
数。

5.

求出当前的
Fibonacci
数,即
c
的值
– c = a - b


6.

为了继续求下一个
Fibonacci
数,需要修改
b

a
的值,即
a = b

b = c


实现步骤

// TwentyAntiFibonacci.cs

using System;

public class
TwentyAntiFibonacci {

public static void Main(){

int a = 1, b = -1, c;

Console.Write(a + "/t" + b);

for(int i = 1; i <= 18; i++){

c = a - b;

Console.Write("/t" + c);

a = b;

b = c;

}

Console.WriteLine();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: