前言
C++ 得到斐波那契数列三种方法
一、斐波那契数列是什么?
斐波那契数列(Fibonacci sequence)
又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。
指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……
在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
二、斐波那契数列的三种实现方法
1.递归
代码如下(示例):
//递归方法
int Recursion(int n)
{
if(n<=2) return 1;
return Recursion(n-1)+Recursion(n-2);
}
2.简单循环,无数组
代码如下(示例):
//简单循环,无数组
int Loop(int n)
{
int f,b,temp;
f=0;
b=1;
if(n<=1) return 1;
for(int i=1;i<n;i++)
{
printf("%d ",b);
temp=f+b;
f=b;
b=temp;
}
}
3.数组
代码如下(示例):
//数组
int Array(int n)
{
int a[max];
a[0]=0;a[1]=1;
if(n>1)
{
for(int i=2;i<=n;i++) a[i]=a[i-1]+a[i-2];
}
}
三、完整代码
#include <iostream>
#include <stdio.h>
#define max 10005
using namespace std;
//递归
int Recursion(int n)
{
if(n<=2) return 1;
return Recursion(n-1)+Recursion(n-2);
}
//简单循环,无数组
int Loop(int n)
{
int f,b,temp;
f=0;
b=1;
if(n<=1) return 1;
for(int i=1;i<n;i++)
{
printf("%d ",b);
temp=f+b;
f=b;
b=temp;
}
//打印输出
printf("%d",b);
}
//数组
int Array(int n)
{
int a[max];
a[0]=0;a[1]=1;
if(n>1)
{
for(int i=2;i<=n;i++) a[i]=a[i-1]+a[i-2];
}
//打印输出
for(int i=1;i<=n;i++) printf("%d ",a[i]);
}
int main()
{
int n;
printf("计算到几项:");
scanf("%d",&n);
printf("递归实现:");
printf("第%d项为:%d",n,Recursion(n));
printf("\n循环实现:");
Loop(n);
printf("\n数组实现:");
Array(n);
return 0;
}
运行结果: