斐波那契数列
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
对兔子中,在当月属于新诞生的兔子尚不能生育。
计算并显示前
实现思路
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
。
显示前
实现思路
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();
}
}
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.csusing 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.csusing 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();
}
}
相关文章推荐
- 【洛谷1962】 斐波那契数列
- 经典递归求斐波那契数列
- 杨辉三角,二项式系数,组合数,斐波那契数列
- HDU4549_M斐波那契数列_斐波那契数列&费马小定理
- 斐波那契数列生成
- Java:编写一个程序输出斐波那契数列中的前20个数
- Java基础算法——斐波那契数列的多种实现方式!
- C语言实现斐波那契数列(非递归)的实例讲解
- HDU 4549 M斐波那契数列
- python实例(斐波那契数列)
- 《剑指offer》牛客网java题解-斐波那契数列
- E - M斐波那契数列 (费马小定理 + 二分快速幂 + 矩阵快速幂)
- 斐波那契数列
- 斐波那契数列循环实现
- 剑指offer_递归与循环---斐波那契数列
- 关于斐波那契数列的Java编程
- 51 nod 1242 斐波那契数列的第N项 矩阵快速幂
- 齐肯多夫定理--斐波那契数列
- 斐波那契数列-递归实现
- 斐波那契数列三种实现方式