달나라 노트

Java - Recursion 본문

Java

Java - Recursion

CosmosProject 2021. 3. 12. 03:19
728x90
반응형

 

 

 

Original source = www.w3schools.com 

 

public class JavaRecursion {
	// Java에서도 재귀 방식으로 method를 사용하는 것이 가능합니다.
	
	public static int func_sum(int k) {
		if (k > 0) {
			return k + func_sum(k - 1);
		}
		else {
			return 0;
		}
	}
	
	public static void main(String args[]) {
		int result = func_sum(10);
		System.out.println(result);
	}
	
	// 위 코드는 1~10까지 숫자의 합을 구하는 코드입니다.
	// 재귀 방식으로 method를 사용하는 방법은 사실 이해가 좀 어려워서 직접 테스트 해보는 것이 빠릅니다.
	// 위 코드가 어떻게 동작하는지 보면
	//
	// Step 1 = 10 + func_sum(9)
	// Step 2 = 10 + 9 + func_sum(8)
	// Step 3 = 10 + 9 + 8 + func_sum(7)
	// ...
	// Step 8 = 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + func_sum(2)
	// Step 9 = 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + func_sum(1)
	// Step 10 = 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + func_sum(0)
	// Step 11 = 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0
	// 
	// 위처럼 단계별로 보면 좀 쉬울겁니다.
}


-- Result
55

 

 

 

 

 

public class JavaRecursion {
	// 이 예시처럼 func_sum에 2개의 parameter를 줘서 특정 범위 내의 숫자끼리의 합을 구하는 것도 가능합니다.
	
	public static int func_sum(int a, int b) {
		if (a > b) {
			return a + func_sum(a - 1, b);
		}
		else {
			return 0;
		}
	}
	
	public static void main(String args[]) {
		int result = func_sum(10, 5);
		System.out.println(result);
	}
}


-- Result
40

 

 

 

 

 

 

 

 

 

728x90
반응형

'Java' 카테고리의 다른 글

Java - 2개의 class 선언, 객체 parameter  (0) 2021.03.13
Java - object (객체)  (0) 2021.03.13
Java - Scope  (0) 2021.03.12
Java - method overloading  (0) 2021.03.12
Java - method parameter  (0) 2021.03.12
Comments