/*#include <stdio.h>
void f1(int n)
{
if (n == 0)
{
return;
}
printf("*");
f1(n - 1);
}
void f(int n)
{
if (n == 0)
{
return;
}
f1(n);printf("\n");
f(n - 1);
}
int main()
{
int n;
scanf("%d", &n);
f(n);
return 0;
}
*//*
#include<stdio.h>
void f(int n)
{
if(n==0)
{
return;
}
f(n/2);
printf("%d",n%2);
}
int main()
{
int n;
scanf("%d",&n);
if(n==0)
{
printf("0");
}
else
{
f(n);
}
return 0;
}
f(n) : n의 각 자릿수의합
: n/10 의 각자릿수의합 + n%10
:f(n/10) + n%10
*//*
#include<stdio.h>
long long int f(long long int n)
{
if(n==0)
{
return 0;
}
return f(n/10)+n%10;
}
int main()
{
long long int n;
scanf("%lld",&n);
printf("%lld",f(n));
return 0;
}
f(n) : n번째 피보나치수
n-1번째 피보나칙수 + n-2번째 피보나치수
f(n-1) + f(n-2)
n==1 , n ==2 return 1;
memoization : 메모이제이션 : 계산했떤 적 있는 값을 메모해놓고, 다시 계산하지 않도록
#include<stdio.h>
int m[201]={};
int f(int a)
{
if(m[a]!=0) return m[a];
if(a==1||a==2)
{
return 1;
}
return m[a]=( f(a-1)+f(a-2))%10009;
}
int main()
{
int a;
scanf("%d",&a);
printf("%d",f(a));
return 0;
}
*/