/*#include <stdio.h>
int n, k, d[1010];
int lower_bound(int k)
{
int i;
for(i=1;i<=n;i++)
{
if(k<=d[i])
break;
}
return i;
}
int main()
{
scanf("%d", &n);
for(int i=1; i<=n; i++)
scanf("%d", &d[i]);
scanf("%d", &k);
printf("%d\n", lower_bound(k));
}
#include<stdio.h>
int sum(int m)
{
int a,s=0;
while(m!=0)
{
a=m%10;
s+=a;
m=m/10;
}
return s;
}
int main()
{
int n,s;
scanf("%d",&n);
s=sum(n);
while(s/10!=0)
{
s=sum(s);
}
printf("%d",s);
}
*/
/**
재귀함수 : ( rec )
다시 돌아오는 함수
re-cursive function
재귀함수의 특징 :
코드가 짧아 -> 사람이 보기에 간결해져
말이 돼 -> 왜 되는지 잘 이해가 안 갈 수도 있어
재귀함수의 정의 :
1. 함수 내에서 자신을 다시 호출하는 함수
2. 자신으로 다시 정의 내리는 함수
*/
/*
f(n) : n ~ 1 출력
: n 출력 -> n-1 ~ 1 출력
: n 출력 -> f(n-1) (n>0)
f(n): 1 ~ n 출력
: 1~(n-1) 출력 -> n 출력
: f(n-1) ->n 출력
*/
/*#include<stdio.h>
void f(int n)
{
if (n==0)
{
return ;
}
f(n-1);
printf("%d ",n);
}
int main()
{
int n;
scanf("%d",&n);
f(n);
}
#include <stdio.h>
void f(int p,int q)
{
if(p>q)
{
return ;
}
if(p%2==0)
f(p+1,q);
else
{
printf("%d ",p);
f(p+2,q);
}
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
f(a,b);
}
#include <stdio.h>
int f(int n)
{
if(n==0)
return 0;
return n+f(n-1);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
}*/
#include <stdio.h>
int f(int n)
{
if(n==1)
return 1;
return n*f(n-1);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d",f(n));
}