์ฌ๊ท(Recursion) ์ด๋ ๋ฌด์์ผ๊น?
์ด๋ ํ ์ปดํจํฐ๊ณตํ๊ณผ ํ์์ด ์ ๋ช ํ ๊ต์๋์ ์ฐพ์๊ฐ ๋ฌผ์๋ค.
"์ฌ๊ทํจ์๊ฐ ๋ญ๊ฐ์?"
"์ ๋ค์ด๋ณด๊ฒ. ์๋ ์๋ ํ ์ฐ ๊ผญ๋๊ธฐ์ ์ด์ธ์ ๋ชจ๋ ์ง์์ ํต๋ฌํ ์ ์ธ์ด ์์์ด. ๋ง์ ์ฌ๋๋ค์ ๋ชจ๋ ๊ทธ ์ ์ธ์๊ฒ ์๋ง์ ์ง๋ฌธ์ ํ๊ณ , ๋ชจ๋ ์งํ๋กญ๊ฒ ๋๋ตํด ์ฃผ์์ง. ๊ทธ์ ๋ต์ ๋๋ถ๋ถ ์ณ์๋ค๊ณ ํ๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ๋ , ๊ทธ ์ ์ธ์๊ฒ ํ ์ ๋น๊ฐ ์ฐพ์์์ ๋ฌผ์์ด."์ฌ๊ทํจ์๊ฐ ๋ญ๊ฐ์?"
"์ ๋ค์ด๋ณด๊ฒ. ์๋ ์๋ ํ ์ฐ ๊ผญ๋๊ธฐ์ ์ด์ธ์ ๋ชจ๋ ์ง์์...
์ถ์ฒ : namu.wiki/w/%EC%9E%AC%EA%B7%80%ED%95%A8%EC%88%98
ํฉํ ๋ฆฌ์ผ๋ก ์์๋ณด๋ ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ
๋จผ์ ํฉํ ๋ฆฌ์ผ ์ด๋?
์ซ์ n์ด ์ฃผ์ด์ก์ ๋, n ๋ถํฐ 1๊น์ง์ ๊ณฑ์ ๊ฒฐ๊ณผ๋ฅผ ๋ปํ๋ค.
0! = 1
1! = 1
2! = 2 x 1
3! = 3 x 2 x 1
..
n! = n x (n-1) x ... x 1
์ด๊ฒ์ ํธ๋ฆฌ ํํ๋ก ๋ง๋ค๋ฉด, ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ๋ค.
์ ๊ทธ๋ผ ์ด์ ์ ํ์์ด ๋ณด์ธ๋ค.
if (n==1) ์ผ ๊ฒฝ์ฐ ∫(n) = 1;
if (n==2) ์ผ ๊ฒฝ์ฐ ∫(n) = 1;
n์ 0๋ณด๋ค ํฐ ์์ ์ ์์ด๋ค.
∫(n)= n x ∫(n-1)
์ฝ๋๋ก ํํ ํด๋ณด์.
import java.util.Scanner;
public class Factorial_10872 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int result = factorial(N);
System.out.println(result);
}
private static int factorial(int n) {
if (n == 0) {
return 1;
}
if (n == 1) {
return 1;
}
return n * factorial(n - 1);
}
}
ํผ๋ณด๋์น๋ก ์์๋ณด๋ ์๊ณ ๋ฆฌ์ฆ
ํผ๋ณด๋์น ์์ด์ด๋?
์ถ์ฒ : ko.wikipedia.org/wiki/%ED%94%BC%EB%B3%B4%EB%82%98%EC%B9%98_%EC%88%98
ํผ๋ณด๋์น ์์ด์ ํ๋ฒ ์์ธํ ๋ณด์.
์ ํ์์ ์์ฑ ํด ๋ณด์.
if(n==0 ) ์ผ๋, ∫(0) = 0;
∫(1) = 1;
∫(2) = 1;
n > 2 ๋ฅผ ๋ง์กฑํ๋ ์์ ์ ์์ ๋ํ์ฌ
∫(n)= ∫(n-1) + ∫(n-2)
์ฝ๋๋ก ์์ฑํ๋ฉด,
import java.util.Scanner;
public class Fibonacci {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int result = fibonacci(N);
System.out.println(result);
}
private static int fibonacci(int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
if (n == 2) {
return 1;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
}