Bootstrap

求Fibonacci数列前40个数

一、求Fibonacci数列前40个数。这个数列有以下特点:第1,2两个数为1,1。从第3个数开始,该数是其前面两个数之和。即

F1=1                 (n=1)

F2=2                 (n=2)

Fn=Fn-1+Fn-2(n>=3)

    这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?

    不满1个月的为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。可以看到每个月的兔子总数依次为1,1,2,3,5,8,13,...。这就是Fibonacci数列。

    根据给出的每月兔子总数的关系,可编写程序如下:

#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    long f1,f2;
    int i;
    f1=f2=1;
    for(i=1;i<=20;i++)
    {
    cout<<setw(12)<<f1<<setw(12)<<f2;//设备输出字段宽度为12,每次输出两个数
    if(i%2==0) cout<<endl;           //每输出完4个数后换行,使每行输出4个数
    f1=f1+f2;                        //左边的f1代表第3个数,是第1,2两个数之和
    f2=f2+f1;                        //左边的f2代表第4个数,是第2,3两个数之和
    }
    return 0;
}

运行结果如下:

二、用递归法计算斐波那契数列的第n项

斐波纳契数列(Fibonacci Sequence)又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1960年代起出版了《斐波纳契数列》季刊,专门刊载这方面的研究成果。

#include <stdio.h>  
int Fibonacci(int n)  
{  
 if( n == 1 || n == 2) // 递归结束的条件,求前两项  
  return 1;  
 else  
  return Fibonacci(n-1)+Fibonacci(n-2); // 如果是求其它项,先要求出它前面两项,然后做和。  
}  
  
int main()  
{  
 int n;  
 printf("please input n: ");  
 scanf("%d",&n);  
 printf("Result: %d\n",Fibonacci(n));  
 return 0;  
} 



;