Java再帰呼び出しテスト小demo

5894 ワード

  • 再帰的単純点は、メソッドが自分自身を呼び出すことである.ある条件を満たすまでメソッドを終了します.以下、その用途を一例として説明する
  • package feilong.day1221;
    import java.util.Scanner;
    /**
     *         
     * 5=5*4*3*2*1=120
     * @author Nanfeilong
     */
    public class Diguidiaoyong_jiecheng {
        public static void main(String[] args) {
            System.out.println("       :");
            Scanner scanner = new Scanner(System.in);
            int a = scanner.nextInt();
            System.out.println(multiply(a));
            scanner.close();
        }
        public static long multiply(int b) {
            if(b<=0)  return 1;//    
            else   return b*multiply(b-1);//multiply(b-1)     
        }
    
    }

    5と入力すると5*4*3*2*1=120となります
  • まだ分からない場合は、
  • の例を見てみましょう.
    package feilong.day1221;
    
    import java.util.Scanner;
    
    /**
     *      (a)1+2+3+4...100
     * @author Nanfeilong
     */
    public class Diguidiaoyong {
        public static void main(String[] args) {
            System.out.println("         100");
            int a = new Scanner(System.in).nextInt();
            System.out.println(addnum(a));
        }
        public static int addnum(int num){
            if(num==100)   return 1;//    
            else   return num+addnum(num+1);//addnum(num+1)     
        }
    }
    

    例えば98と入力すると、結果は98+99+1=198となる.
    100に等しい場合は1を返すからです
  • フィボナッチ数列は後ろの数が前の2つの数の和
  • である.
    /**
     *           
     * @author Nanfeilong
     *
     */
    package feilong.day1221;
    
    import java.util.Scanner;
    
    
    public class Test1 {
        public static void main(String[] args) {
            /*
             *       
             * 1  1  2  3  5  8  13  21   34   55  89  144...
             */
            System.out.println("          ?");
            int n = new Scanner(System.in).nextInt();
            long r = g(n);
            long f = f(n);
            System.out.println("        "+n+"   :"+f);
            System.out.println(r);
        }
    
        private static long g(int n) {
            long a = 1;
            long b = 1;
            for(int i = 3; i<=n; i++){
                b=a+b;
                a=b-a;
                System.out.println("===========");
                System.out.println(b);
                System.out.println(a);
            }
            return b;
        }
    
        private static long f(int n) {
            if(n==1||n==2) {
                return 1;
            }
            return f(n-1)+f(n-2);
        }
    }
    

    何番目のフィボナッチ数列を求めますか?5
    2 1
    3 2
    5 3フィボナッチ数列の5番目の数は:5です.