// 재귀호출
public class Ex08_recursion {
	public static void main(String[] args) {
		Test8 tt = new Test8();
		int s;
		
		s = tt.sum(10);
		System.out.println(s);

		s = tt.pow2(10);
		System.out.println(s);
		
		System.out.println(tt.pow(2, 5)); // 32.0
		System.out.println(tt.pow(2, -2)); //0.25
		
		// 최대공약수
		System.out.println(tt.gcd(12, 8)); // 4
		
	}
}
class Test8 {
	public int sum(int n) {
		return n>1 ? n+sum(n-1) : n;
	}
/*
		int s=0;
		for(int i=1; i<=n; i++){
			s+=i;
		}
		return s;
 */
		
	// 2의 x승 결과
	public int pow2(int n) {
		return n>=1 ? 2 * pow2(n-1) : 1;			
	}
	
	// x의 y승 결과
	public double pow(int x, int y) {
		if(y>=0) {
			return y>=1 ? x * pow(x, y-1) : 1;
		} else {
			return (1.0 / x) * pow(x, y+1);			
		}
	}
	
	// 최대공약수
	public int gcd(int a, int b) {
		return b==0 ? a : gcd(b, a%b);
	}
}

재귀호출 : 메소드에서 자신의 메소드를 다시 호출, 처리하지 못한 데이터는 스택!(저장공간)에 저장

+ Recent posts