/*
#include <stdio.h>
int main()
{
int i,n,sum=0,r=0;
scanf("%d",&n);
while(n>0)
{
r=r*10+n%10;
sum+=n%10;
n=n/10;
}
printf("%d\n",r);
printf("%d",sum);
}
*/
/*
#include <stdio.h>
long long int n;
long long int f(long long int n)
{
long long int r=0;
while(n>0)
{
r=r*10+n%10;
n=n/10;
}
return r;
}
int main()
{
scanf("%lld", &n);
printf("%lld\n", f(n));
}
*/
/*
#include <stdio.h>
int f(int n)
{
int sum=0;
while(n>0)
{
sum+=n%10;
n=n/10;
}
return sum;
}
int main()
{
int i,n,sum=0;
scanf("%d",&n);
while(1){
sum=f(n);
if(sum<10)
{
break;
}
else
{
n=sum;
}
}
printf("%d",sum);
return 0;
}
1. 재귀함수 뽀개기
2. 어려운문제를 재귀함수를 이용해서 풀기
재귀함수 (recursive function)
재 : 다시 re
귀 : 돌아온다 cursive
재귀함수의 특징
1. 짧다
2. 말이 되는데, 왜 되는지 잘 모르겠어
재귀함수의 정의
1. 함수 내에서 자신을 다시 호출하는 함수
2. 자신으로 다시 정의내리는 함수
f(n) : n부터 1까지 출력
: n출력 n-1출력 .... 1출력
: n출력 -> n-1부터 1까지 출력
: n출력 -> f(n-1);
#include <stdio.h>
void f(int n)
{
if(n==0) return ; // 종료조건
f(n-1); // 재귀호출
printf("%d ",n);
}
int main()
{
int i,n;
scanf("%d",&n);
f(n);
return 0;
}
1. n 입력받아서 1~ n 출력
2. n 입력받아서 n ~1 출력
3. n 입력받아서 1 ~ n 중에 홀수만 출력
4. a, b 입력받아서 a ~b 출력 (a<=b)
*/
/*
#include <stdio.h>
void f(int n)
{
if(n==0) return;
f(n-1);
printf("%d ",n);
}
int main()
{
int i,n;
scanf("%d",&n);
f(n);
return 0;
}
*/
/*
#include <stdio.h>
void f(int n)
{
if(n==0) return;
printf("%d ",n);
f(n-1);
}
int main()
{
int i,n;
scanf("%d",&n);
f(n);
return 0;
}
*/
/*
#include <stdio.h>
void f(int n)
{
if(n==0) return;
f(n-1);
if(n%2!=0)
{
printf("%d ",n);
}
}
int main()
{
int i,n;
scanf("%d",&n);
f(n);
return 0;
}
*/
/*
#include <stdio.h>
void f(int a,int b)
{
if(a==b+1) return;
printf("%d ",a);
f(a+1,b);
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
f(a,b);
return 0;
}
*/