[Baekjoon] - 10단계 : 재귀함수
1. 팩토리얼
#include <stdio.h>
int rec(int n);
int main(){
int n;
scanf("%d",&n);
printf("%d",rec(n));
}
int rec(int n){
if(n < 1) return 1;
return n * rec(n-1);
}
2. 피보나치 수 5
#include <stdio.h>
int rec(int n);
int main(){
int n;
scanf("%d",&n);
printf("%d",rec(n));
}
int rec(int n){
if(n <= 0) return 0;
else if(n == 1 || n == 2) return 1;
return rec(n-1) + rec(n-2);
}
3. 별 찍기 - 10
#include <stdio.h>
void rec(int i, int j, int num){
if((i/num)%3 == 1 && (j/num)%3 == 1){
printf(" ");
}
else{
if(num/3 == 0) printf("*");
else rec(i,j,num/3);
}
}
int main(){
int n;
scanf("%d",&n);
int num = n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
rec(i,j,num);
}
printf("\n");
}
}
4. 하노이 탑 이동 순서
#include <stdio.h>
#include <math.h>
void rec(int n, int a, int b, int c){
if(n == 1) {
printf("%d %d\n",a,c);
return ;
}
rec(n-1,a,c,b);
rec(1,a,b,c);
rec(n-1,b,a,c);
}
int main(){
int n;
scanf("%d",&n);
int min = pow(2,n)-1;
printf("%d\n",min);
rec(n,1,2,3);
return 0;
}
요약
- 없다.
- 3번 별찍기는 조건을 알아내면 된다. 3으로 나눠가면서..
- 하노이탑 간단해보여도 이해할 수 없다.