Почему функция foo не может правильно вернуться? - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь написать рекурсивную функцию в программировании C, но компилятор продолжает предупреждать меня: управление может достигнуть конца функции, не являющейся void. Я не знаю, где я могу ошибаться.

int foo(int* ptr){
  int flag = 0;
  --(*ptr);
  if((*ptr)!=0) flag = 1;
  if(flag == 0) return 1;
  else foo(ptr);
}

int main()
{
  int count=10;
  int* ptr = &count;

  int n = foo(ptr);
  printf("%d", n);

  return 0;
}

Спасибо.

1 Ответ

0 голосов
/ 26 марта 2020

в вашем операторе else в функции foo вы ничего не возвращаете.

должно быть так:

int foo(int* ptr) {
    int flag = 0;
    --(*ptr);
    if ((*ptr) != 0) 
        flag = 1;
    if (flag == 0) 
        return 1;
    else return foo(ptr);
}
...