JAVA 반복, 재귀함수
2018. 3. 25. 22:16ㆍ개발노트
반복함수
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class Main { public static int factorial (int number) { int sum = 1; for(int i = 2; i<= number; i++) { sum *=i; } return sum; } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("10 팩토리얼은" + factorial(10)); } } | cs |
팩토리얼 ex)10 팩토리얼이라고 했을 때 10 * 9 * 8 ..... * 1
1 2 | 10 팩토리얼은3628800 | cs |
위의 반복함수를 재귀함수로 바꿔서 쓰면
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class Main { public static int factorial (int number) { if(number == 1) return 1; else return number * factorial(number - 1); } public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("10 팩토리얼은" + factorial(10)); } } | cs |
반복함수로 피보나치수열 만들기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | public class Main { public static int fibonacci (int number) { int one = 1; int two = 1; int result = -1; if (number == 1) { return one; } else if (number == 2) { return two; } else { for(int i = 2; i < number; i++) { result = one + two; one = two; two = result; } } return result; } public static void main(String[]args) { System.out.println("피보나치 수열의 10번째 원소는" + fibonacci(10) + "입니다."); } } | cs |
결과 값
1 2 | 피보나치 수열의 10번째 원소는55입니다. |
재귀함수로 바꿔서 나타내면
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public class Main { public static int fibonacci (int number) { if(number == 1) { return 1; } else if (number == 2) { return 1; } else { return fibonacci(number - 1) + fibonacci(number - 2); } } public static void main(String[]args) { System.out.println("피보나치 수열의 10번째 원소는" + fibonacci(10) + "입니다."); } } | cs |
반복함수보다 재귀함수가 코드는 짧지만
때에 따라서 많은 시간을 소요해야 결과 값을 얻을 수 있습니다.
예를들어 위의 피보나치 수열을 나타내려고 하면 중복되는 값이 많기때문에
(피보나치수열은 누적 값을 구할 때 사용 ex) 5까지의 피보나치 수열은 1+1 = 2, 2+3=5......)