gwooden_코린이
java_재귀호출_221125(5일차) 본문
package 재귀호출;
public class Main {
public static void main(String[] args) {
Rec rec = new Rec();
int result;
result = rec.rescursive_func(5);
System.out.println("결과 : " + result);
}
}
※결과값 결과 : 15 |
package 재귀호출;
public class Rec {
//1부터 x까지 합계를 구하는 매서드
public int rescursive_func(int num) { //num -> 5일 때
if(num == 1)
return 1;
메서드는 항상 먼저 처리가 되어야지 그 다음을 처리할 수 있다.
위에서 시작해서 만 아래 리턴까지 갔다 다시 위로 올라가는 방식으로 누적되서 처음 리턴이 완료되면 최종적으 로 호출
return num + rescursive_func(num - 1); //나 자신을 호출해서 사용
// return 5 + rescursive_func(5 - 1);
// return 4 + rescursive_func(4 - 1);
// return 3 + rescursive_func(3 - 1);
// return 2 + rescursive_func(2 - 1);
// return 1;
}
}
호출이 먼저 되고 리턴이 마지막에
rec.rescursive_func(5);
0.
public int rescursive_func(int 5) { //num -> 5일 때 if(num == 1) return 1; return 5 + rescursive_func(5 - 1) rescursive_func(5 - 1) return 5 + 4 + 3 + 2 + 1 |
1.
public int rescursive_func(int 4) { if(num == 1) return 1; return 4 + rescursive_func(4 - 1) rescursive_func(4 - 1) return 4 + 3 + 2 + 1 |
2.
public int rescursive_func(int 3) { if(num == 1) return 1; return 3 + rescursive_func(3 - 1) rescursive_func(3 - 1) return 3 + 2 + 1 |
3.
public int rescursive_func(int 2) { if(num == 1) return 1; return 2 + rescursive_func(2 - 1) rescursive_func(2 - 1) return 2 + 1 |
4.
public int rescursive_func(int 1) { if(num == 1) if(num == 1) return 1; return 1; //int 1이다 보니 if문으로 인해 맨 하단 리턴이 실행 되지 않는다. return 2 + rescursive_func(2 - 1) rescursive_func(1 - 1) return 1 |
package 팩토리얼계산;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//팩토리얼 계산
//5! -> 5 x 4 x 3 x 2 x 1
//10! -> 10 x 9 x 8 x ... x 2 x 1
//정수를 입력받아 입력받은 정수의 팩토리얼 값을 출력
//정수 입력 : 5
//결과 : 120
Fclac fclac = new Fclac();
Scanner sc = new Scanner(System.in);
int num, mul;
System.out.print("정수를 입력하세요 : ");
num = sc.nextInt();
mul = fclac.mul(num);
System.out.println(mul);
}
}
※결과값 정수를 입력하세요 : 5 5 * 4 * 3 * 2 * 1 = 120 |
package 팩토리얼계산;
public class Fclac {
public int mul (int num) {
if(num != 1) //반복하다 그 num 값이 1이 아닐 때는 다음으로 넘어감
System.out.print(num +" * "); //반복되면서 나오는 숫자는 리턴 위에 설정하여 실행해야 된다.
if(num == 1) { //넘어가면서 마지막 숫자 뒤에 붙는건 *은 조건이 안되고 다음 조건이 되는 = 이 붙는다
System.out.print(num +" = ");
return 1;
}
return num * mul(num - 1);
}
}
'java > 5일차' 카테고리의 다른 글
java_접근제한자_221125(5일차) (0) | 2022.11.25 |
---|---|
java_생성자_221125(5일차) (0) | 2022.11.25 |
java_오버로딩_221125(5일차) (0) | 2022.11.25 |
java_클래스02_221125(5일차) (0) | 2022.11.25 |
java_클래스_221125(5일차) (0) | 2022.11.25 |