斐波那契数列 订阅
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。 展开全文
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
信息
别    称
黄金分割数列、兔子数列
表达式
F[n]=F[n-1]+F[n-2](n>=3,F[1]=1,F[2]=1)
提出者
莱昂纳多·斐波那契
C语言中
FIB数列
应用学科
数学
中文名
斐波那契数列
适用领域范围
代数
外文名
Fibonacci sequence
提出时间
1202年
斐波那契数列定义
斐波那契数列指的是这样一个数列: 这个数列从第3项开始,每一项都等于前两项之和。斐波那契数列的定义者,是意大利数学家莱昂纳多·斐波那契(Leonardo Fibonacci),生于公元1170年,卒于1250年,籍贯是比萨。他被人称作“比萨的莱昂纳多”。1202年,他撰写了《算盘全书》(Liber Abacci)一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点于阿尔及利亚地区,莱昂纳多因此得以在一个阿拉伯老师的指导下研究数学。他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯等地研究数学。另外斐波纳契还在计算机C语言程序题中应用广泛
收起全文
精华内容
下载资源
问答
  • 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765……(1)fibonacci数列斐波那契数列,它的特点是前面两个数的和等于后面的一个数,fib(0)=fib(1)=1.(2)斐波那契数列只有一个.(3)如...

    未完待续~

    了解fibonacci数列:

    斐波纳契数列(Fibonacci Sequence),又称黄金分割数列。

    1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765……

    (1)fibonacci数列即斐波那契数列,它的特点是前面两个数的和等于后面的一个数,fib(0)=fib(1)=1.

    (2)斐波那契数列只有一个.

    (3)如果设F(n)为该数列的第n项(n∈N+)。那么这句话可以写成如下形式:

    F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)

    显然这是一个线性递推数列。

    下面的例子fib(0)=fib(1)=1

    利用for循环

    输出范围内的数列:

    fibs = [1,1]

    for i in range(8):

    fibs.append(fibs[-2] + fibs[-1])

    # print(fibs)

    print(fibs) # [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

    输出特定个数元素的数列:

    fibs = [1,1]

    num = input('数列元素个数:')

    num=int(num)

    for i in range(num-2):

    fibs.append(fibs[-2] + fibs[-1])

    print(fibs)

    利用函数

    def fibs(num):

    result = [1,1]

    for i in range(num-2):

    result.append(result[-2] + result[-1])

    print(result)

    fibs(10)

    # [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

    例题:

    使用函数输出指定范围内Fibonacci数的个数

    本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数输出两正整数m和n(0

    函数接口定义:

    在这里描述函数接口。例如:

    fib(n)

    PrintFN(m,n,i)

    裁判测试程序样例:

    在这里给出函数被调用进行测试的例子。例如:

    /* 请在这里填写答案 */

    m,n,i=input().split()

    n=int(n)

    m=int(m)

    i=int(i)

    PrintFN(m,n,i)

    输入样例:

    在这里给出一组输入。例如:

    20 100 6

    输出样例:

    在这里给出相应的输出。例如:

    fib(6) = 13

    4

    代码:

    def PrintFN(m,n,i):

    def fib(n):

    fibs = [1, 1]

    for i in range(n):

    fibs.append(fibs[-2] + fibs[-1])

    print("fib(%s)=%d"%(n,fibs[n]))

    fib(i)

    fibs = [1, 1]

    g = 0

    for i in range(n):

    fibs.append(fibs[-2] + fibs[-1])

    # print(fibs)

    if(m

    # print(fibs[i])

    g+=1 #数列个数

    print(g)

    m,n,i=input().split()

    n=int(n)

    m=int(m)

    i=int(i)

    PrintFN(m,n,i)

    展开全文
  • 主要介绍了fibonacci数列(斐波那契数列)示例,大家参考使用吧
  • Fibonacci数列 斐波那契数列

    千次阅读 2019-11-21 17:51:57
    Fibonacci数列 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,...

    Fibonacci数列

    Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。
    当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
    输入格式
    输入包含一个整数n。
    输出格式
    输出一行,包含一个整数,表示Fn除以10007的余数。
    样例输入
    10
    样例输出
    55
    样例输入
    22
    样例输出
    7704
    数据规模与约定
    1 <= n <= 1,000,000。

    首先我们可以定义一个数组F,

    int F[1000000];
    

    由题可知

    F[1]=1;
    F[2]=1;
    

    输入一个N

    int n;
    scanf("%d",&n);
    

    当N<2时输出的就是1,所以

    if(n>2){(数据处理*)}
    

    设定一个循环,因为是从F[3]开始算起,所以for的判定条件为:
    int i=3;i<=n;i++

    Fn的计算就按题目给的Fn=Fn-1+Fn-2来计算。
    对于这部分,我们要想到对于结果的处理不能放到最后,因为int的最大值一定比F1,000,000要小数组100%会炸

    Boom!

    所以我们要在运算时就对每一次的结果进行处理。
    7%4=3
    3%4=3
    可知在运算时我们对斐波那契数列提前取余不会对结果产生影响。
    所以表达式变成了

    F[i]=(F[i-1]+F[i-2])%10007;
    

    以下是完整代码:

    #include<stdio.h>
    #define falg 10007
    main(){
    	int n;
    	scanf("%d",&n);
    	int F[n];
    	F[1]=1;
    	F[2]=1;
    	if(n>2){
    	for(int i=3;i<=n;i++){
    		F[i]=(F[i-1]+F[i-2])%falg;
    		}
    	}
    	printf("%d",F[n]);
    	return 0
    } 
    

    另附两个不同解法:
    这个是我的另一种解法占用空间较小但是算法更复杂

    #include<stdio.h>
    #define falg 10007
    #define M (a1+a2)
    main(){
    	int a1=1,a2=1,ans,n,i;
    	scanf("%d",&n);
    	if(n>2){
    		int bol =n%2;
    		n=(n-2)/2;
    		for(i=0;i<n;i++){
    			a1=M%falg;
    			a2=M%falg;	
    		}
    		if(bol==1){
    			a2=M%falg;
    		}
    	}
    
    	printf("%d\n",a2);
    	return 0; 
    } 
    

    引用自百度知道 殛丿殪 的回答

    #include<stdio.h>
    int main(void)
    {
    int x,y,z,i,n;
    x = 0;
    y = 0;
    z = 1;
    i = 0;
    scanf("%d",&n);
    while(i<n)
    {
    x=y;
    y=z;
    z=x+y;
    z=z%10007;
    i +=1;
    }
    y=y%10007;
    printf("%d",y);
    return 0;
    }
    
    展开全文
  • 未完待续~ ...1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765……(1)fibonacci数列斐波那契数列,它的特点是前面两个数的和等于后面的一个数,fib(0)=fib(1)=1.(2)斐波那契...

    未完待续~

    了解fibonacci数列:

    斐波纳契数列(Fibonacci Sequence),又称黄金分割数列。

    1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765……
    (1)fibonacci数列即斐波那契数列,它的特点是前面两个数的和等于后面的一个数,fib(0)=fib(1)=1.
    (2)斐波那契数列只有一个.

    (3)如果设F(n)为该数列的第n项(n∈N+)。那么这句话可以写成如下形式:

      F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)

      显然这是一个线性递推数列。

    下面的例子fib(0)=fib(1)=1

     

    利用for循环

     

     

    输出范围内的数列:
    fibs = [1,1]
    for i in range(8):
    fibs.append(fibs[-2] + fibs[-1])
    # print(fibs)
    print(fibs) # [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

    输出特定个数元素的数列:
    fibs = [1,1]
    num = input('数列元素个数:')
    num=int(num)
    for i in range(num-2):
    fibs.append(fibs[-2] + fibs[-1])
    print(fibs)

    利用函数

    def fibs(num):
    result = [1,1]
    for i in range(num-2):
    result.append(result[-2] + result[-1])
    print(result)
    fibs(10)
    # [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

    例题:
    使用函数输出指定范围内Fibonacci数的个数 
     本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数输出两正整数m和n(0<m<n≤100000)之间的所有Fibonacci数的数目。 所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,fib(0)=fib(1)=1。其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数的个数。

    函数接口定义:

    在这里描述函数接口。例如:
    fib(n)
    PrintFN(m,n,i)
    

    裁判测试程序样例:

    在这里给出函数被调用进行测试的例子。例如:
    /* 请在这里填写答案 */
    
    m,n,i=input().split()
    n=int(n)
    m=int(m)
    i=int(i)
    PrintFN(m,n,i)
    

    输入样例:

    在这里给出一组输入。例如:

    20 100 6
    

    输出样例:

    在这里给出相应的输出。例如:

    fib(6) = 13
    4


    代码:

    def PrintFN(m,n,i):
    def fib(n):
    fibs = [1, 1]
    for i in range(n):
    fibs.append(fibs[-2] + fibs[-1])
    print("fib(%s)=%d"%(n,fibs[n]))
    fib(i)
    fibs = [1, 1]
    g = 0
    for i in range(n):
    fibs.append(fibs[-2] + fibs[-1])
    # print(fibs)
    if(m<fibs[i]<n):
    # print(fibs[i])
    g+=1 #数列个数
    print(g)



    m,n,i=input().split()
    n=int(n)
    m=int(m)
    i=int(i)
    PrintFN(m,n,i)








     

    转载于:https://www.cnblogs.com/xuemo/p/10788545.html

    展开全文
  • Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一 个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要...

    题目描述:

    Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, ...,在Fibonacci数列中的数我们称为Fibonacci数。给你一 个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。 

    输入描述:

    输入为一个正整数N(1 ≤ N ≤ 1,000,000)

    输出描述:

    输出一个最小的步数变为Fibonacci数

    示例:输入 15 输出 2

    代码实现:

    #include<stdlib.h>
    #include<stdio.h>
    #include<iostream>
    using namespace std;
    
    int min(int a, int b){
    	if (a<b) {
    		return a;
    	}
    	else {
    		return b;
    	}
    }
    int main(){
    	int N, f, l = 0, r = 0, f0 = 0, f1 = 1;    
    	cin >> N;    
    	while (1){
    		f = f0 + f1;        
    		f0 = f1;        
    		f1 = f;        
    		//找到比N小且距离N最近的数,求出距离        
    		if(f < N)             
    			l = N-f;        
    		else { 
    			//找到比N大且距离N最近的数,求出距离            
    			r = f - N;            
    			break;        
    		}    
    	} 
    	//取最小距离    
    	cout << min(l,r) << endl;    
    	return 0; 
    } 

     

    展开全文
  • 斐波那契数列Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、...
  • Fibonacci数列 Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一 个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数...
  • 文章目录一、什么是Fibonacci数列二、递归算法实现1. 设计递归方程2. 确定边界条件3. 编写程序代码4. 运行结果展示 一、什么是Fibonacci数列 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
  • //Fibonacci数列:1,1,2,3,5,8,... //求该数列第n个数的值。 //数列满足递归公式:F1=1,F2+=1,Fn=Fn-1 + Fn-2 public class Fibonacci { public static void main(String[] args){ System...
  • 斐波那契数列Fibonacci sequence):这个数列从第3项开始,每一项都等于前两项之和。 @Test public void test1() { Scanner sc=new Scanner(System.in); System.out.println("输入需要斐波那契数列的个...
  • MIPS汇编语言实现Fibonacci数列的存储和输出,其中输出方式有两种(十进制和十六进制)。 下面给出自己的代码,如有bug欢迎指出 .data start: .asciiz "\n Input N = " last: .asciiz "\n The result is " out1: ....
  • 写一个函数,fact(int n)求Fibonacci数列的第n个值。Fibonacci数列满足f(0)=1, f(1)=1,f(n)=f(n-1)+f(n-2) (当n>=2) 延伸:求斐波那契数列的前n项和 int fact(int n) { if(n==1||n==2) { return 1; } ...
  • 背景——Fabonacci数列的介绍(摘自百度百科):斐波那契数列Fibonacci sequence),又称黄金分割数列。因数学家列昂纳多·斐波那契(Leonardoda Fibonacci )以兔子繁殖为例子而引入,故又称为“兔子数列”,指...
  • Fibonacci数列是第一个和第二个数都是1; 以后每个数是前两两个数之和,用公式f1=f2=1; fn=f(n-1)+f(n-2)要求使用数组存储Fibonacci数 */ public static void main(String[] args) { //建立
  • 斐波那契数列

    2020-01-29 12:44:14
    Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行,包含一个整数,表示Fn除以10007的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,177
精华内容 33,670
关键字:

斐波那契数列