为什么函数 foo 不能 return 正确?

Why does the function foo cannot return properly?

我正在尝试用 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;
}

谢谢。

在函数 foo 的 else 语句中,您没有返回任何内容。

应该是这样的:

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