이것저것
정올 - 함수3 본문
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&sca=10d0
JUNGOL
www.jungol.co.kr
자가진단1
재귀함수 이용
#include <stdio.h>
int printmessage(int n);
int main(void) {
int n;
scanf("%d", &n);
printmessage(n);
return 0;
}
int printmessage(int n) {
if (n != 0) {
printf("recursive\n");
return printmessage(--n);
}
}
자가진단2
재귀함수 이용
#include <stdio.h>
int printnum(int n);
int main(void) {
int n;
scanf("%d", &n);
printnum(n);
return 0;
}
int printnum(int n) {
if (n != 0) {
printf("%d ", n);
return printnum(--n);
}
}
자가진단3
재귀함수 이용
#include <stdio.h>
int printsum(int n);
int main(void) {
int n;
scanf("%d", &n);
printsum(n);
return 0;
}
int printsum(int n) {
static int sum = 0;
if (n != 0) {
sum += n;
return printsum(--n);
}
else
printf("%d", sum);
}
자가진단4
#include <stdio.h>
#include <math.h>
int powsum(int n);
int main(void) {
int n;
scanf("%d", &n);
powsum(n);
return 0;
}
int powsum(int n) {
static int sum = 0;
if (n != 0) {
sum += pow(n%10,2);
return powsum(n/10);
}
else {
printf("%d", sum);
}
}
자가진단5
#include <stdio.h>
void dice(int k);
void printresult();
int n, arr[101];
int main(void) {
scanf("%d", &n);
arr[0] = 1;
dice(1);
return 0;
}
void dice(int k) {
int i;
if (k > n) {
printresult();
return;
}
for (i = arr[k - 1]; i <= 6; i++) {
arr[k] = i;
dice(k + 1);
}
}
void printresult() {
for (int i = 1; i <= n; i++)
printf("%d ", arr[i]);
printf("\n");
}
자가진단6
#include <stdio.h>
int main(void) {
int N;
scanf("%d", &N);
printf("%d", sum(N));
return 0;
}
int sum(int n) {
if (n <= 1)
return 1;
else
return sum(n / 2) + sum(n - 1);
}
형성평가1
#include <stdio.h>
void half(int N);
int main(void) {
int N;
scanf("%d", &N);
half(N);
return 0;
}
void half(int N) {
if (N < 2) {
printf("%d ", N);
}
else {
half(N / 2);
printf("%d ", N);
}
}
형성평가2
#include <stdio.h>
int main(void) {
int N;
scanf("%d", &N);
result(N);
return 0;
}
int result(int n) {
if (n <= 2)
printf("%d ", n);
else {
result(n - 2);
printf("%d ", n);
}
}
형성평가3
#include <stdio.h>
void dice(int level, int sum);
int arr[6];
int a = 0;
int main(void) {
int N, M;
scanf("%d %d", &N, &M);
dice(N, M);
return 0;
}
void dice(int N, int M) {
for (int i = 1; i <= 6; i++) {
arr[a] = i; // 첫 번째 숫자 지정
if (a == N-1) { // 숫자 개수가 입력한 숫자와 같은 경우
int sum = 0;
for (int j = 0; j < N; j++)
sum += arr[j]; // 총합 구하기
if (sum == M) { // 총합이 입력한 숫자와 같은 경우
for (int k = 0; k < N; k++)
printf("%d ", arr[k]); // 숫자 출력
printf("\n");
return; // 종료
}
}
else {
a++; // 그 다음번째 숫자 구하기 위해 자리 이동
dice(N, M);
a--; // 다시 돌아옴
}
}
}
형성평가4
#include <stdio.h>
int main(void) {
int arr[100] = { 1,2 };
int n;
scanf("%d", &n);
for (int i = 2; i <= n; i++) {
arr[i] = (arr[i - 1] * arr[i - 2]) % 100;
}
printf("%d", arr[n-1]);
return 0;
}
형성평가5
#include <stdio.h>
void print(int n, int level);
int level = 0;
int main(void) {
int n;
scanf("%d", &n);
print(n, level);
return 0;
}
void print(int n, int level) {
if (n == 1)
printf("%d", level);
if (n % 2 == 0) {
n /= 2;
print(n, ++level);
}
else {
n /= 3;
print(n, ++level);
}
}
형성평가6
#include <stdio.h>
void multiply(int n);
int multi = 1;
int main(void) {
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
multiply(a*b*c);
return 0;
}
void multiply(int n) {
if (n == 0) {
printf("%d", multi);
return;
}
int temp;
temp = n % 10;
if (temp != 0)
multi *= temp;
multiply(n / 10);
}