본문 바로가기

Datastructure/[Algorithm]

[자료구조] 재귀

728x90
반응형

[1] 양의 정수를 입력 받아, 각 자리의 수를 높은 자릿수부터 차례로 출력하는 프로그램을 작성하시오.

#include  <stdio.h>
#include  <string.h>
#include  <stdlib.h>
/*양의 정수를 입력 받아, 각 자리의 수를 높은 자릿수부터 차례로 출력하는 프로그램을 작성하시오.*/
void decimal(int n){
    int dec=0,tmp=n,cnt=1;
    while(tmp>0){tmp/=10;dec++;}
    for (int i = 0; i < dec-1; i++) cnt*=10;
    printf("%d\n",n/cnt);
    n = n -(n/cnt)*cnt;
    if(n>0)decimal(n);
}
int main(){
    int n;
    scanf("%d",&n);
    decimal(n);
}

[2] 양의 정수를 입력 받아, 각 자리의 수를 낮은 자릿수부터 차례로 출력하는 프로그램을 작성하시오.

#include  <stdio.h>
#include  <string.h>
#include  <stdlib.h>
/*양의 정수를 입력 받아, 각 자리의 수를 낮은 자릿수부터 차례로 출력하는 프로그램을 작성하시오.*/
void decimal(int n){
    printf("%d\n",n%10);
    n/=10;
    if(n>0)decimal(n);
}
int main(){
    int n;
    scanf("%d",&n);
    decimal(n);
}

[3] N 개의 정수를 입력 받아 (N ≤ 20), 최댓값을 구하는 프로그램을 작성하시오.

#include  <stdio.h>
#include  <string.h>
#include  <stdlib.h>
void max(int *num,int N,int M,int *prst){
    //N: 배열의 길이
    //M: 현재 비교대상 인덱스
    if(N > M){
        if(num[M] > *prst) *prst = num[M];
        M++;
        max(num,N,M,prst);
    }
}

int main(){
    int N,M,rst = -1,*prst = &rst;scanf("%d",&N);
    int num[20];
    for(int i=0;i<N;i++)scanf("%d",&num[i]);
    max(num,N,M,prst);
    printf("%d",*prst);
}
728x90
반응형
댓글