再帰処理

1. フィボナッチ数列

   //再帰を使用した場合
    static int fibonacci(int n) {
        
        if (n < 2) {
            return 1;
        }
        
        return fibonacci(n - 2) + fibonacci(n - 1);
        
    }

    //ループを使用した場合   
    static int fibonacci2(int n) {
        if (n < 2) {
            return 1;
        }
        
        int fibo1 = 1, fibo2 =1, fibonacci = 1;
        for (int i = 3; i <= n; i++) {
            
            fibonacci = fibo1 + fibo2;
            fibo1 = fibo2;
            fibo2 = fibonacci;
        }
        return fibonacci;
    }
    //呼び出し側
    public static void main(String[] args) {
        
        for (int i = 0; i < 10; i++) {
            System.out.println(fibonacci(i));
        }
        System.out.println("------------------------------------");
        
        for (int i = 0; i < 10; i++) {
            System.out.println(fibonacci2(i));
        }
        
    }

2. 階乗

    static int factorial(int n ) {
        if (n < 2) {
            return 1;
        }
        return n * factorial(n - 1);
    }