728x90
문제설명

시작수(aa)와 마지막 수(bb)가 입력되면

aa부터 bb까지의 모든 홀수를 출력하시오.

이 문제는 반복문 for, while 등을 이용하여 풀수 없습니다.

금지 키워드 : for while goto

 

 

입력

두 수 a, b 가 입력된다. (1<=a<=b<=1001<=a<=b<=100)

 

 

출력

a~b의 홀수를 모두 출력한다.

 

 

 

입력예시

2 7

 

 

출력예시

3 5 7


#include <stdio.h>
int n1=1;
void num(int n1, int n2){
    if(n1>n2){
        return;
    }
    if(n1%2!=0){
        printf("%d ",n1);
    }
    num(n1+1,n2);
}
int main(void){
    int number1, number2;
    scanf("%d %d", &number1, &number2);
    num(number1, number2);
    return 0;
}

이 문제는 앞에와 크게 다르지 않다. 달라진점을 말한다면 넘기는 변수가 하나 더 생겼다는 것이다. 그래서 저장하는 과정과 넘기는 과정, 그리고 받는 변수 자리에서는 2개씩 선언해준다. 그리고 for, while을 못쓴다고 하여 그냥 if문으로 판단해주기로 했다. n1이 n2보다 커지는 순간으로 설정을 해주면 n1이 하나씩 더해주는 과정에서 종료될 수 있을 것이라고 생각하였다. 그리고 한번더 if문을 선언해서 안에 부분은 2로 나누어 나머지가 나올 경우만 출력해주도록 해야 한다.

 

여기 마지막 num() 재귀함수 과정에서 살짝 머뭇거렸는데 그 이유는 앞 문제와 마찬가지로 한가지 값만 전달했기 때문이다. 이러면 오류가 나게 된다. 그러므로 n1 처럼 하나만 바뀌면 그것은 병화를 주고 다른 하나는 n2라고 그대로 값을 설정해주면 큰 문제가 생기지 않는다.

728x90

+ Recent posts