菲波那切數列遞迴和迭代演算法
阿新 • • 發佈:2019-01-06
#include <iostream> using namespace std; int Fabonaqie1(int num){ //迭代演算法1 int a2 = 0; if (num == 1){ return 0; } else if(num == 2){ return 1; } else{ int a0 = 0; int a1 = 1; for (int i = 3 ;i <= num ; ++i){ a2 = a0 + a1; a0 = a1; a1 = a2; } } return a2; } int Fabonaqie2(int num){ 迭代演算法2 int a0 = 0; int a1 = 1; if (num == 1){ return a0; } else if(num == 2){ return a1; } else{ for (int i = 0 ;i < (num-2)/2;++i){ a0 = a0 + a1; a1 = a1 + a0; } if (!(num%2)){ return a1; } else{ return a0 + a1; } } } int Fabonaqie3(int num){ //遞迴演算法 if (num == 1){ return 0; } else if(num == 2){ return 1; } else{ return Fabonaqie3(num -1) + Fabonaqie3(num - 2); } } int main(void){ /*cout << Fabonaqie1(6) <<endl; cout << Fabonaqie2(6) <<endl;*/ cout << Fabonaqie3(5) <<endl; int vvv; cin >> vvv; }