/*
#include <stdio.h>
int d[101][101]={};
f(int x,int y)
{
int i,j;
for(j=y+10; j>y; j--){
for(i=x; i<x+10; i++){
d[i][j]=1;
}
}
}
int main()
{
int n,x,y,i,j,s=0;
scanf("%d",&n);
for(int a=0; a<n; a++){
scanf("%d %d",&x,&y);
f(x,y);
}
for(j=100; j>=1; j--){
for(i=1; i<=100; i++){
if(d[i][j]==1){
s++;
}
}
}
printf("%d",s);
return 0;
}
*/
/*
재귀 함수 (recursive function)
특징
1. 코드가 짧아
2. 말이되는데, 왜 되는지??잘모르겠어
정의
1. 함수 내에서 자신을 다시 호출하는 함수
2. 자신으로 다시 정의내리는 함수
f(n) : 1 ~n까지 출력
: 1 ~ n-1까지출력 -> n출력
: f(n-1) -> n출력
f(3) : f(2) -> print 3
f(2) : f(1) -> print 2
..
f(1) : f(0) -> print 1
f(0) : f(-1) -> print 0 (x)
//void f(int n)
//{
// for(int i=1;i<=n;i++)
// {
// printf("%d ",i);
// }
//}
#include <stdio.h>
void f(int n)
{
if(n==0)
{
return ;
}
else
{
f(n-1);
printf("%d ",n);
}
}
int main()
{
int n=10;
f(n); // f함수 호출
}
---> 의문점!!굳이??
재귀함수 사용 -> 코드 간단 -> 복잡한문제를 간단히 풀수있어
피보나치, 우박수, 파스칼 ...
-->퀘스트 f(n) : n부터 1까지 출력 -> 재귀함수로
f(n) : n~ 1
: n출력 -> n-1 ~ 1
: print n -> f(n-1)
*/
/*
#include <stdio.h>
void f(int x)
{
if(x==0){
return ;
}
else{
f(x-1);
printf("%d ",x);
}
}
int main()
{
int n=3;
f(n);
}
1. f(a,b) : a ~ b 출력
*/
/*
#include <stdio.h>
void f(int x,int y)
{
if(y==x-1){
return ;
}
else{
f(x,y-1);
if(y%2!=0){
printf("%d ",y);
}
}
}
int main()
{
int a,b;
scanf("%d %d",&a,&b);
f(a,b);
return 0;
}
*/
/*
#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));
return 0;
}
*/
/*
#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));
return 0;
}
*/