求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
#include
using namespace std;
int main()
{
    long f1,f2;
    int i;
    f1=f2=1;
    for(i=1;i<=20;i++)
    {
    cout<

运行结果如下:

求Fibonacci数列前40个数_第1张图片

二、用递归法计算斐波那契数列的第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   
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;  
} 



你可能感兴趣的:(C++)