펙토리얼 구현
package kr.co.kihd.recursive;
public class FactorialTest {
public static void main(String[] args) {
long result = FactorialTest.factorial(5L);
System.out.println("5!(펙토리얼)의 값 : "+ result);
}
public static long factorial(long n) {
long result = 0L;
//n이 비로소 1일떄, 재귀호출이 더이상 실행안됨. f(1) = 1이됨.
if(n == 1) {
result = 1;
}
else {
System.out.println("result값 : "+ result +", n값 : "+ n);
result = n * factorial(n-1); //재귀 호출이 직접적으로 이루어지는 곳
}
return result;
}
}
result값 : 0, n값 : 5
result값 : 0, n값 : 4
result값 : 0, n값 : 3
result값 : 0, n값 : 2
5!(펙토리얼)의 값 : 120
거듭승 구현
package kr.co.kihd.recursive;
import java.util.Scanner;
public class PowerTest {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int x = 0;
int n = 0;
long result = 0L;
System.out.println("제곱까지의 합을 계산합니다.");
System.out.println("ex) 2의 3승 : "
+"2의 1승 + 2의 2승 + 2의 3승은 14입니다!");
System.out.println("제곱하고 싶은 수를 입력:");
x = scan.nextInt();
System.out.println("몇승을 더할까요?");
n = scan.nextInt();
for(int i = 1; i<=n ; i++) {
result += power(x, i);
}
System.out.printf("%d의 %d승 까지의 합은 %d입니다 ",x,n,result);
scan.close();
}
public static long power(int x, int n) {
if(n == 1) {
return x;
}
else {
return x * power(x, n-1);
}
}
}
제곱까지의 합을 계산합니다.
ex) 2의 3승 : 2의 1승 + 2의 2승 + 2의 3승은 14입니다!
제곱하고 싶은 수를 입력:
2
몇승을 더할까요?
3
2의 3승 까지의 합은 14입니다