Board logo

標題: 遞迴函式 - 費式數列 [打印本頁]

作者: tonyh    時間: 2013-1-12 16:33     標題: 遞迴函式 - 費式數列

本帖最後由 tonyh 於 2013-1-12 17:02 編輯

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

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

試設計一程式, 使能推算費式數列的第N項為?
  1. import java.util.Scanner;
  2. public class ch54
  3. {
  4.     public static void main(String args[])
  5.     {
  6.         int x;
  7.         Scanner s=new Scanner(System.in);
  8.         System.out.print("請問想推算費式數列的第幾個項次? ");
  9.         x=s.nextInt();
  10.         System.out.println("費式數列的第"+x+"項, 值為: "+fib(x));
  11.     }

  12.     public static int fib(int n)
  13.     {
  14.         if(n<=1)           //邊介條件,使遞迴函式不會無窮的執行下去
  15.             return n;
  16.         else
  17.             return fib(n-1)+fib(n-2);   //遞迴呼叫, 使函式漸漸往邊界條件移動
  18.     }
  19. }

  20. /*
  21. fib(5)=fib(4)+fib(3)
  22.       =fib(3)+fib(2)+fib(2)+fib(1)
  23.       =fib(2)+fib(1)+fib(1)+fib(0)+fib(1)+fib(0)+1
  24.       =fib(1)+fib(0)+1+1+1+1
  25.       =1+1+1+1+1
  26.       =5
  27. */
複製代碼

作者: t3742238    時間: 2013-1-12 17:01

  1. import java.util.Scanner;
  2. public class.ch54
  3. {
  4.   public static void main(Sting args[])
  5.   {
  6.     int x;
  7.     Scanner s=new Scanner(System.in);
  8.     System.out.print("請問想推算的費式數列的是第幾項次");
  9.     x=s.nextInt();
  10.     System.out.println("費式數列的第"+x+"項,值為:"+fib(x));
  11.    
  12.   }public static int fib(int n)
  13.   {
  14.     if(n<=1)
  15.         return n;
  16.     else
  17.         return fib(n-1)+fib(n-2);
  18.   }
  19. }
複製代碼

作者: 劉漢文    時間: 2013-1-12 17:02

  1. import java.util.Scanner;
  2. public class ch54
  3. {
  4.     public static void main(String args[])
  5.     {
  6.         int x;
  7.         Scanner s=new Scanner(System.in);
  8.         System.out.print("請問想推算費式數列的第幾個項次? ");
  9.         x=s.nextInt();
  10.         System.out.println("費式數列的第"+x+"項, 值為: "+fib(x));
  11.     }

  12.     public static int fib(int n)
  13.     {
  14.         if(n<=1)
  15.             return n;
  16.         else
  17.             return fib(n-1)+fib(n-2);
  18.     }
  19. }
複製代碼

作者: t2364705    時間: 2013-1-12 17:02

  1. import java.util.Scanner;
  2. public class ch54
  3. {
  4.     public static void main(String args[])
  5.     {
  6.         int x;
  7.         Scanner s=new Scanner(System.in);
  8.         System.out.print("請問想推算費式數列的第幾個項次? ");
  9.         x=s.nextInt();
  10.         System.out.println("費式數列的第"+x+"項, 值為: "+fib(x));
  11.     }

  12.     public static int fib(int n)
  13.     {
  14.         if(n<=1)
  15.             return n;
  16.         else
  17.             return fib(n-1)+fib(n-2);
  18.     }
  19. }
複製代碼

作者: 尤泓鈞    時間: 2013-1-12 17:04

  1. import java.util.Scanner;
  2. public class.ch54
  3. {
  4.   public static void main(Sting args[])
  5.   {
  6.     int x;
  7.     Scanner s=new Scanner(System.in);
  8.     System.out.print("請問想推算的費式數列的是第幾項次");
  9.     x=s.nextInt();
  10.     System.out.println("費式數列的第"+x+"項,值為:"+fib(x));
  11.    
  12.   }public static int fib(int n)
  13.   {
  14.     if(n<=1)
  15.         return n;
  16.     else
  17.         return fib(n-1)+fib(n-2);
  18.   }
  19. }
複製代碼

作者: 蔡昀佑    時間: 2013-1-12 17:09

  1. import java.util.Scanner;
  2. public class ch54
  3. {
  4.     public static void main(String args[])
  5.     {
  6.         int x;
  7.         Scanner s=new Scanner(System.in);
  8.         System.out.print("請問想推算費式數列的第幾個項次? ");
  9.         x=s.nextInt();
  10.         System.out.println("費式數列的第"+x+"項, 值為: "+fib(x));
  11.     }

  12.     public static int fib(int n)
  13.     {
  14.         if(n<=1)           //邊介條件,使遞迴函式不會無窮的執行下去
  15.             return n;
  16.         else
  17.             return fib(n-1)+fib(n-2);   //遞迴呼叫, 使函式漸漸往邊界條件移動
  18.     }
  19. }

  20. /*
  21. fib(5)=fib(4)+fib(3)
  22.       =fib(3)+fib(2)+fib(2)+fib(1)
  23.       =fib(2)+fib(1)+fib(1)+fib(0)+fib(1)+fib(0)+1
  24.       =fib(1)+fib(0)+1+1+1+1
  25.       =1+1+1+1+1
  26.       =5
  27. */
複製代碼

作者: 蔡昀佑    時間: 2013-1-12 17:09

  1. import java.util.Scanner;
  2. public class ch54
  3. {
  4.     public static void main(String args[])
  5.     {
  6.         int x;
  7.         Scanner s=new Scanner(System.in);
  8.         System.out.print("請問想推算費式數列的第幾個項次? ");
  9.         x=s.nextInt();
  10.         System.out.println("費式數列的第"+x+"項, 值為: "+fib(x));
  11.     }

  12.     public static int fib(int n)
  13.     {
  14.         if(n<=1)           //邊介條件,使遞迴函式不會無窮的執行下去
  15.             return n;
  16.         else
  17.             return fib(n-1)+fib(n-2);   //遞迴呼叫, 使函式漸漸往邊界條件移動
  18.     }
  19. }
複製代碼

作者: 黃博鴻    時間: 2013-1-12 17:15

  1. import java.util.Scanner;
  2. public class ch54
  3. {
  4.       public static void main(String args[])
  5.       {
  6.            int x;
  7.            Scanner ss=new Scanner(System.in);
  8.            System.out.println("請問你要推算費氏數列的哪一個項次?");
  9.            x=ss.nextInt();
  10.            System.out.println("費氏數列的"+x+"項次的值為"+nr(x));
  11.       }
  12.       public static int nr (int h)
  13.       {
  14.            if(h<=1)
  15.            return h;
  16.            else
  17.            return nr(h-1)+nr(h-2);
  18.       }
  19. }
複製代碼

作者: 粘靖瑜    時間: 2013-1-19 11:01

  1. import java,until.Scanner;
  2. public class ch54
  3. {
  4.     public static void main(String args[])
  5.     {
  6.          int x;
  7.          Scanner s=new Sanner(System.in);
  8.          System.out.print("請問要推算費氏數列第幾個項式? ");
  9.          x=s.nextInt();
  10.          System.out.println("費氏數列的第""個項式值為: "+fib(x));
  11.     }
  12.    
  13.     public static int fid(int n)
  14.     {
  15.          if(n<=1)
  16.              return n;
  17.          else
  18.              return fib(n-1)+fib(n-2);
  19.     }
  20. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2