펙토리얼 구현 

    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입니다 

     

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading