본문 바로가기

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
반응형
댓글