返回列表 發帖

遞迴函式 (二) - 費式數列

本帖最後由 tonyh 於 2014-8-30 16:41 編輯

費氏數列規則如下:
第n項 = 第 n-1 項  + 第 n-2 項

即整個費式數列為:
1 1 2 3 5 8 13 21 34 55 89 144 233 377...

利用函式遞迴法, 推算費氏數列中第N項的值.

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int fei(int);
  5. int main()
  6. {
  7.     int n;
  8.     cout<<"請輸入欲推算費氏數列的項次: ";
  9.     cin>>n;
  10.     cout<<"費氏數列中第"<<n<<"個項次的值為: "<<fei(n)<<endl;
  11.     system("pause");   
  12.     return 0;
  13. }
  14. int fei(int n)
  15. {
  16.     if(n<=1)
  17.         return n;
  18.     else
  19.         return fei(n-1)+fei(n-2);
  20. }
  21. /*
  22.     假設 n=4
  23.     fei(4)=fei(3)+fei(2)
  24.           =fei(2)+fei(1)+fei(1)+fei(0)
  25.           =fei(1)+fei(0)+1+1+0
  26.           =1+0+1+1+0
  27.           =3
  28. */
複製代碼
附件: 您需要登錄才可以下載或查看附件。沒有帳號?註冊

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int fei(int);
  5. int main()
  6. {
  7.     int n;
  8.     cout<<"請輸入欲推算費氏數列的項次: ";
  9.     cin>>n;
  10.     cout<<"費氏數列中第"<<n<<"個項次的值為: "<<fei(n)<<endl;
  11.     system("pause");   
  12.     return 0;
  13. }
  14. int fei(int n)
  15. {
  16.     if(n<=1)
  17.         return n;
  18.     else
  19.         return fei(n-1)+fei(n-2);
  20. }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int fei(int);
  5. int main()
  6. {
  7.     int n;
  8.     cout<<"輸入欲推算費氏數列項次";
  9.     cin>>n;
  10.     cout<<"費氏數列中第"<<n<<"各項次的值為"<<fei(n)<<endl;
  11.     system("pause")
  12.     return 0;
  13. }
  14. int fei(int n)
  15. {
  16.     if(n<=1)
  17.         return n;
  18.     else
  19.         return fei(n-1)+fei(n-2);      
  20. }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int fei(int);
  5. int main()
  6. {
  7.     int n;
  8.     cout<<"請輸入欲推算的費事數列項次: ";
  9.     cin>>n;
  10.     cout<<"費事數列第"<<n<<"個數次的值為: "<<fei(n)<<endl;
  11.     system("pause");     
  12.     return 0;
  13. }
  14. int fei(int n)
  15. {
  16.     if(n<=1)
  17.        return n;
  18.     else
  19.        return fei(n-1)+fei(n-2);
  20. }   
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. int fei(int);
  4. using namespace std;
  5. int main ()
  6. {
  7.   int n;
  8.   cout<<"請輸入欲推算費氏數列的項次:";
  9.   cin>>n;  
  10.   cout<<"費氏數列第"<<n<<"個數次的值為: "<<fei(n)<<endl;
  11.   system("pause");
  12.   return 0;
  13. }
  14. int fei(int n)
  15. {
  16.    if(n<=1)
  17.    return n;
  18.    else
  19.    return fei(n-1)+fei(n-2);
  20. }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int a(int);
  5. int main()
  6. {
  7.     int n;
  8.     cout << "請輸入欲推算費氏數列的項次:" << endl;
  9.     cin >> n;
  10.     cout << "費氏數列中第" << n << "個項次的值為:" << a(n) << endl;
  11.     system("pause");
  12. }
  13.     int a(int n)
  14.     {
  15.       if(n<=1)
  16.         return n;
  17.       else
  18.         return a(n-1)+ a(n-2);   
  19.     }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int fei(int);
  5. int main()
  6. {
  7.     int n;
  8.     cout<<"請輸入欲推算的費式數列項次: ";
  9.     cin>>n;
  10.     cout<<"費式數列中第"<<n<<"個項次的值為:"<<fei(n)<<endl;
  11.     system("pause");     
  12.     return 0;
  13. }   
  14. int fei(int n)
  15. {
  16.     if(n<=1)
  17.         return n;
  18.     else
  19.         return fei(n-1)+fei(n-2);   
  20. }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;

  4. long double fib(int);

  5. int main()
  6. {
  7.         int f;
  8.         cout<<"請輸入欲推算的費氏數列項次: ";
  9.         cin>>f;
  10.         cout<<"費氏數列中第"<<f<<"個項次的值為"<<fib(f)<<endl;

  11.   
  12.        
  13.        
  14.         system("pause");
  15.         return 0;
  16. }

  17. long double fib(int n)
  18. {
  19.         if(n<=1)
  20.         return n;
  21.         else if(n<0)
  22.         while(1)
  23.         cout<<'\a';
  24.         else
  25.         return fib(n-1)+fib(n-2);
  26.        
  27. }
複製代碼

TOP

本帖最後由 林宇翔 於 2014-8-30 16:45 編輯
  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int g(int);
  5. int main()
  6. {
  7.     int a;
  8.     cout<<"請輸入費數列的項次: ";
  9.     cin>>a;
  10.     cout<<"費數列中的第" << a<<"個像次的數是"<<g(a) << endl;
  11.     system("pause");     
  12.     return 0;
  13. }
  14. int g(int a)
  15. {
  16.      if(a <= 1)
  17.                  return a;
  18.          else
  19.                  return fei(n-1)+fei(n-2);
  20. }
複製代碼

TOP

返回列表