递归函数在C中

Jor*_*tro 1 c recursion

我有一个递归函数,我想计算其中的零数,如何使用常量来计算零,不允许重置.

int countZeros(int num)
{
    int count = 0;

    if (num > 0)
    {
        if (num % 10 == 0)
            count++;

        return(countZeros(num / 10));
    }
    if (num <= 0)
        return count;

}
Run Code Online (Sandbox Code Playgroud)

对于我的代码,我的计数将在调用返回函数后重置.有没有办法防止这种情况发生?我必须将值返回到我的main函数并从那里显示.

case 9:
    printf("Enter a number: ");
    scanf("%d", &recursion);
    printf("number of zeros = %d",countZeros(recursion));
    break;
Run Code Online (Sandbox Code Playgroud)

use*_*443 5

试试这段代码:

int countZeros(int num)
{
    if (num > 0 && num % 10 == 0)
        return(countZeros(num / 10)+1);

    else
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

它将以相同的方式工作,只注意如果你的num是负数(但仍然用零-100,它会返回0).

要使用负数,请使用:

int countZeros(int num)
{
    if (num !=0 && num % 10 == 0)
        return (countZeros(num / 10)+1);

    else
        return 0;
}
Run Code Online (Sandbox Code Playgroud)