본문 바로가기

재귀

[백준/C언어] 11729번 - 하노이 탑 이동 순서 백준 웹사이트 "11729번 - 하노이 탑 이동 순서" 문제풀이입니다. 언어는 C언어입니다. (제출 언어: C99) 문제 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 소스 코드 #include int hanoi(int n, int start, int end, int tag); int other_rod(int start, int end); int main(void){ int N; scanf("%d", &N); int count = hanoi(N, 1, 3, 0); printf("%d\n", cou.. 더보기
[백준/C언어] 2447번 - 별 찍기 - 10 백준 웹사이트 "2447번 - 별 찍기 - 10" 문제풀이입니다. 언어는 C언어입니다. (제출 언어: C99) 문제 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 소스 코드 #include #include char star[2187][2187]; void make_star(int size, char (*star)[2187], int m, int n); // 1 더보기
[백준/C언어] 10870 - 피보나치 수 5 백준 웹사이트 "10870번 - 피보나치 수 5" 문제풀이입니다. 언어는 C언어입니다. (제출 언어: C99) 문제 10870번: 피보나치 수 5 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 소스 코드 #include int fibonacci(int n); int main(void){ int n; scanf("%d", &n); printf("%d\n", fibonacci(n)); } int fibonacci(int n){ if(n==0) return 0; else if(n==1) return 1; .. 더보기
[백준/C언어] 10872번 - 팩토리얼 백준 웹사이트 "10872번 - 팩토리얼" 문제풀이입니다. 언어는 C언어입니다. (제출 언어: C99) 문제 10872번: 팩토리얼 0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오. www.acmicpc.net 소스 코드 #include int factorial(int n); int main(void){ int N; scanf("%d", &N); printf("%d\n", factorial(N)); } int factorial(int n){ if(n==0) return 1; else return n*factorial(n-1); } 문제 풀이 재귀함수(recursive function)를 이용하는 가장 기본적인 문제입니다. 재귀함수는 함수를 정의할 때 자신을 재참조하는.. 더보기