자료구조&알고리즘3 [Recursion] 간단한 예제 Factorial: n!0~n까지의 곱정의0! = 1 (n=0)n! = n * (n-1)! (n>0) 예제 Factorial.javafactorial(int n) 1~n 까지의 곱public class Factorial{ public static void main(String[] args){ int result = factorial(4); System.out.print(result); } public static int factorial(int n){ if (n==0){ return 1; }else{ return n * factorial(n-1); } }} x^nx의 n승정의x^0 = 1 (n=0)x^n = x * x^n-1 (n>0) 예제 Power.javapower(double x, int n) 1~.. 2017. 7. 2. [Recursion] 개념 Recursion 자기 자신을 호출하는 함수 순환, 재귀함수 What is Recursion void func(...){ ... func(...); ...} 예제 Code01.java public class Code01{ public static void main(String[] args){ func(); } public static void func(){ System.out.printle("Hello world"); func(); }} 실행 결과 무한 루프에 빠지게 된다. Recursion은 항상 무한루프에 빠질까? No! 항상 그렇지 않다. 예제 Code02.java public class Code02{ public static void main(String[] args){ int n = 4; fun.. 2017. 6. 18. [Recursion] 미로 찾기 미로 찾기 (Decision Problem) 미로찾기 해결 알고리즘 중에 Recursion을 이용한 것이 가장 간명하다. Decision Problem : 답이 yse or no인 문제 Recursive Thinking 현재 위치가 출구인가? 아니면, 이웃한 셀들 중 현재 위치를 지나지 않고 출구까지 가는 경로가 있다. 현재 위치에서 출구까지의 경로 이웃한 셀들 중에서 출구까지 가능 경로 찾기 Recursion을 설계할 때는 "무한루프에 빠지지 않는가?"를 가장 먼저 생각해야 한다. [ 위치 x,y로 부터 출구까지 가는 경로가 있는지 판단하는 함수 ] findPath 수도 코드 boolean findPath(x,y){ if (x,y) is the exit return true; else mark (x,y.. 2017. 3. 24. 이전 1 다음