需要使用递归解决方案来解决这个问题

时间:2014-01-01 14:13:21

标签: c

好的,问题是以下..我需要输入一个数字,程序需要打印该数字的位数< 5.应使用递归函数完成数字的打印。示例:“对于数字8423871,应打印4231:4”。这是我的解决方案没有递归,有人可以帮助我提出递归解决方案..

int main() 

{

    int n, pom, digit=0, a;
    printf("Enter a number: ");
    scanf("%d", &n);
    pom=n;
    while(pom > 0)
    {
        a = pom % 10;
        if(a < 5)
            digit++;
        pom=pom/10;
    }
    printf("%d : %d\n", n, digit);

    return 0;
}

1 个答案:

答案 0 :(得分:0)

#include <stdio.h>

int func_r(int n, int counter){
    int q = n / 10;
    int r = n % 10;
    if(n == 0) return counter;
    if(r < 5){
        counter = func_r(q, counter + 1);
        printf("%d", r);
    } else {
        counter = func_r(q, counter);
    }
    return counter;
}

int main(){
    int n, digit;
    printf("Enter a number: ");
    scanf("%d", &n);
    digit = func_r(n, 0);
    printf(" : %d\n", digit);

    return 0;
}