[Javaアルゴリズム]7-1.再帰関数(スタックフレーム)


🌼 Problem



🍔 ソリューション1:1出力開始

import java.util.Scanner;

public class 재귀함수 {

    // 방법 1 : 1부터 출력
    public static void Solution(int index, int input){

        if(index == input){
            System.out.println(index);
        }else{
            System.out.println(index);
            Solution(index+1, input);
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        Solution(1,input);
    }
}
[結果]

🍔 ソリューション2:n出力開始

import java.util.Scanner;

public class 재귀함수 {

    // 방법 2: n부터 출력
   public static void Solution(int n){
        if(n==1){
            System.out.println(n);
        }else{
            System.out.println(n);
            Solution(n-1);
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        Solution(input);
    }
}
[結果]

🍪 講師ソリューション:ソリューション(n-1)コードをアップロードし、1から出力しますか?(スタックフレーム)

import java.util.Scanner;

public class 재귀함수 {

    // 방법 3: 1부터 출력
    public static void Solution(int n){
        if(n==0) return;
        else{
            Solution(n-1);	// backtracking 방식
            System.out.print(n + " ");
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int input = sc.nextInt();
        Solution(input);
    }
}
[結果]