Рекурсивная функция не работает с указателем - PullRequest
0 голосов
/ 28 февраля 2019

Эта функция предназначена для возврата количества нулей в числе, num.Функция rCountZeros2 () передает результат через результат параметра указателя.`

void rCountZeros2(int num, int *result)
{
    if (num==0)
        return;
    else
    {
        if (num%10==0){
            (*result)++;
            }
        rCountZeros2(num/10, result);

    }
}

`

1 Ответ

0 голосов
/ 28 февраля 2019

Посмотрите, когда вы вызываете rCountZeros2(), я предполагаю, что значение в переменной result не равно нулю. Это может быть какое-то мусорное значение или какое-то другое значение из предыдущих вычислений. Однако, с предоставленными вами деталями трудно дать точный ответ.

Пожалуйста, попробуйте следующую автономную программу, я получил правильный ответ, используя ваш код

void rCountZeros2(int num, int *result)
{
    if (num==0)
        return;
    else
    {
        if (num%10==0){
            (*result)++;
            }
        rCountZeros2(num/10, result);

    }
}
int main()
{
    int result = 0;
    int num=12300000;
    rCountZeros2(num, &result);
    printf("number of zeros in %d = %d",num ,result);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...