C語言經典演算法(八)——遞迴實現斐波那契數列的兩種方法
阿新 • • 發佈:2018-10-31
後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現斐波那契數列
1、 遞迴實現斐波那契數列Fib(n)
<1> 題目描述:輸入n值,求解第n項的斐波那契數列值
<2> 方法一:概念法
<3> 方法二:遞迴法
斐波那契數列值是值1 1 2 3 5 8 13前兩項之和為下一項
原始碼:
一、 遞迴實現斐波那契數列Fib(n)
1、 概念法
#include<iostream>
#include<assert.h>
using namespace std;
unsigned int Fib(unsigned int n)
{
unsigned int fib1 = 1;
unsigned int fib2 = 1;
unsigned int fib;
for(int i=3; i<=n; ++i)//原理直接法
{
fib = fib1 + fib2;
fib1 = fib2;
fib2 = fib;
}
return fib;
}
void main()
{
unsigned int n;
cout<<"請輸入n:";
cin>>n;
cout <<"第"<<n<<"項的斐波那契值為:>"<<Fib(n)<<endl;
}
2、 遞迴法
#include<iostream>
#include<assert.h>
using namespace std;
unsigned int Fib(unsigned int n)
{
if(n==1 || n==2)
return 1;
else
return Fib(n-1)+Fib(n-2);
}
void main()
{
unsigned int n;
cout<<"請輸入n:";
cin>>n;
cout<<"第"<<n<<"項的斐波那契值為:>"<<Fib(n)<<endl;
}