엄지월드

순환(Recursion)의 개념과 기본 예제1 본문

알고리즘

순환(Recursion)의 개념과 기본 예제1

킨글 2018. 9. 16. 18:03


Tip ! 순환 함수를 학습할 때는 숫자를 직접 넣어서 스스로 시뮬레이션 해보는 게 이해가 빠르다. 


public class Recursion_1 {

// 1. Recursion을 이용하여 "Hello" 문자를 n의 갯수 만큼 출력하는 방법

public static void main(String[] args) {

int n = 4;

func(n);

}

public static void func(int n) {

if (n <=0) {

return; // Base cas : 적어도 하나의 recursion에 빠지지 않는 경우가 존재해야 한다.

}

else {

System.out.println("Hello");

func(n-1); // Recursive case : recursion을 반복하다보면 결국 basecase로 수령해야 한다.

}

}


// 2. Recursion을 이용하여 1부터 n까지의 합을 구하여 출력하는 방법

public static void main(String args[]){

int result = func(4); // 숫자 입력

System.out.println(result); // 출력

}

public static int func(int n){ // 이 함수의 mission은 1부터 n까지의 합을 구하여 출력하는 것이다.

if(n==0)

return 0; // n=0이라면 합은 0이다.

else{

// System.out.println(n); // n이 어떻게 출력 되는 지 궁금하면 print 해보자!

return n+func(n-1); // n이 0보다 크다면 0에서 n까지의 합은 0에서 n-1까지의 합에 n을 더한 것이다.


}

// 3. 피보나치함수(fibonacci)를 구하는 방법 - 재귀

// 조건 : f(0) = 0, f(1) = 1

// 식 : f(n) = f(n-1) + f(n-2) 

public int fibonacci(int n){

if(n<2) // f(0)과 f(1)은 0과 1으로 n에 값과 동일하게 정해져 있으므로 2이하이면 n을 리턴해준다.

return n; 

else

return fibonacci(n-1) + fibonacci(n-2);

}

// 4. 최대공약수(gcd)를 구하는 방법 - 재귀 

// 아래 소스가 정말 작동하는지 궁금증이 든다면, p와 q에 직접 숫자를 넣어서 진행해보자 

// ex) p = 5, q = 2는 1이 리턴됨

// ex) p = 4, q = 2는 2가 리턴됨

public static int gcd(int p, int q){

if(q==0)

return p;

else

return gcd(q, p%q); 

}

}


진행 중 질문이 있으면 댓글로 작성해주세요~

출처 - 인프런 

'알고리즘' 카테고리의 다른 글

[백준] 2178 미로 탐색 (BFS)  (0) 2022.07.27
기술면접 준비  (0) 2022.07.08
그리디 알고리즘  (0) 2022.06.28
팰린드롬  (0) 2022.06.17
순환(Recursion)의 개념과 기본 예제2  (0) 2018.09.16
Comments