편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.02.13

    c언어 자릿수들의 곱 재귀함수 질문


    3자리로 이루어진 자연수 3개를 입력받아 그 수들의 곱을 구한 후 그 결과값의 각 자리 숫자들중 0을 제외한 모든 수들의 곱을 구하여 출력하는 프로그램을 재귀함수로 작성하시오.

    • 입력: 100 123 111
    • 출력: 270

    도움말: 입력예제의 세 수의 곱은 1365300이다. 그러므로 1 * 3 * 6 * 5 * 3 = 270 1의 자리수 * 1의 자리를 제외한 남은 자리수의 곱 (단 1의 자리수가 0이면 1로 바꾸어서 곱한다.)

    코드입니다.

    #include <stdio.h>
    
    int cal(int mul, int num)
    {
        if(!(mul/10))
            return num*mul;
        if(mul%10)
            return cal(mul/10, num*(mul%10));
        else
            return cal(mul/10, num);
    }   
    
    int main(void)
    {
        int inp1, inp2, inp3;
    
        scanf("%d %d %d", &inp1, &inp2, &inp3);
        int mul = inp1*inp2*inp3;
        printf("%d", cal(mul, 1));
    
        return 0;
    }
    

    저는 재귀함수가 호출 호출 호출 호출하고 호출된 값을 거슬러 올라가서 값을 구하는 방식인 거라고 생각합니다. 이렇게 이해 했습니다.

    제 생각대로라면 두 번째 if문에서 num/10을 계속해서 호출할 때, 만약 mul값이 135780이라고 하면 13578 1357 135 13 1 이렇게 값이 반영되고 이 반영된 값이 뒤에 있는 인자 값이랑

    1* 뒤에 인자 값 13*뒤에 인자 값 135*뒤에 인자 값 13578*뒤에 인자 값 이렇게 되는 거 아닌가요? 정말 이해하기 함듭니다요.

  • 프로필 HIAOAIH님의 편집
    날짜2020.02.13

    c언어 재귀함수 질문


    3자리로 이루어진 자연수 3개를 입력받아 그 수들의 곱을 구한 후 그 결과값의 각 자리 숫자들중 0을 제외한 모든 수들의 곱을 구하여 출력하는 프로그램을 재귀함수로 작성하시오.

    입력: 100 123 111 출력: 270

    도움말: 입력예제의 세 수의 곱은 1365300이다. 그러므로 1 * 3 * 6 * 5 * 3 = 270 1의 자리수 * 1의 자리를 제외한 남은 자리수의 곱 (단 1의 자리수가 0이면 1로 바꾸어서 곱한다.)

    코드입니다.

    #include <stdio.h>
    
    int cal(int mul, int num)
    {
        if(!(mul/10))
            return num*mul;
        if(mul%10)
            return cal(mul/10, num*(mul%10));
        else
            return cal(mul/10, num);
    }   
    
    int main(void)
    {
        int inp1, inp2, inp3;
    
        scanf("%d %d %d", &inp1, &inp2, &inp3);
        int mul = inp1*inp2*inp3;
        printf("%d", cal(mul, 1));
    
        return 0;
    }
    

    저는 재귀함수가 호출 호출 호출 호출하고 호출된 값을 거슬러 올라가서 값을 구하는 방식인 거라고 생각합니다. 이렇게 이해 했습니다.

    제 생각대로라면 두 번째 if문에서 num/10을 계속해서 호출할 때, 만약 mul값이 135780이라고 하면 13578 1357 135 13 1 이렇게 값이 반영되고 이 반영된 값이 뒤에 있는 인자 값이랑

    1* 뒤에 인자 값 13*뒤에 인자 값 135*뒤에 인자 값 13578*뒤에 인자 값 이렇게 되는 거 아닌가요??? ㅜㅜㅜ 정말 이해하기 함듭니다요 ㅜㅜ

  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.02.13

    c언어 재귀함수 질문


    3자리로 이루어진 자연수 3개를 입력받아 그 수들의 곱을 구한 후 그 결과값의 각 자리 숫자들중 0을 제외한 모든 수들의 곱을 구하여 출력하는 프로그램을 재귀함수로 작성하시오.

    입력: 100 123 111 출력: 270

    도움말: 입력예제의 세 수의 곱은 1365300이다. 그러므로 1 * 3 * 6 * 5 * 3 = 270 1의 자리수 * 1의 자리를 제외한 남은 자리수의 곱 (단 1의 자리수가 0이면 1로 바꾸어서 곱한다.)

    코드입니다.

    include

    int cal(int mul, int num) {

    if(!(mul/10))
        return num*mul;
    if(mul%10)
        return cal(mul/10, num*(mul%10));
    else
        return cal(mul/10, num);
    

    }

    int main(void) {

    int inp1, inp2, inp3;
    
    scanf("%d %d %d", &inp1, &inp2, &inp3);
    int mul = inp1*inp2*inp3;
    printf("%d", cal(mul, 1));
    
    return 0;
    

    }

    저는 재귀함수가 호출 호출 호출 호출하고 호출된 값을 거슬러 올라가서 값을 구하는 방식인 거라고 생각합니다. 이렇게 이해 했습니다.

    제 생각대로라면 두 번째 if문에서 num/10을 계속해서 호출할 때, 만약 mul값이 135780이라고 하면 13578 1357 135 13 1 이렇게 값이 반영되고 이 반영된 값이 뒤에 있는 인자 값이랑

    1* 뒤에 인자 값 13*뒤에 인자 값 135*뒤에 인자 값 13578*뒤에 인자 값 이렇게 되는 거 아닌가요??? ㅜㅜㅜ 정말 이해하기 함듭니다요 ㅜㅜ