为什么函数 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);
}
我正在尝试用 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);
}