当我尝试使用 return 关键字 运行 递归程序时收到警告
I get a warning when I try to run the recursion program with return keyword
我期待 1 2 3
作为输出,但是当我尝试 运行 这个代码时:
#include <iostream>
using namespace std;
int fun(int x){
if (x>0){
return fun(x-1);
cout<<x<<endl;
}
}
int main()
{
int x=3;
fun(x);
return 0;
}
我收到此警告:
warning: control reaches end of non-void function
为什么不 return 值并调用 fun(x-1)
?
但是下面的代码工作得很好。我得到 3 2 1
作为输出。
#include <iostream>
using namespace std;
int fun(int x){
if (x>0){
cout<<x<<endl;
return fun(x-1);
}
}
int main()
{
int x=3;
fun(x);
return 0;
}
函数一旦 return
就不能再执行任何代码:
if (x>0){
return fun(x-1);
cout<<x<<endl; // <-- NEVER EXECUTED
}
警告是因为你的函数有一个非 void
return 类型,但当 x
是 [=16= 时没有 return
任何值],从而导致 未定义的行为。
试试这个:
#include <iostream>
using namespace std;
int fun(int x){
if (x>0){
int ret = fun(x-1);
cout << x << endl;
return ret;
}
return 0;
}
int main()
{
fun(3);
return 0;
}
我期待 1 2 3
作为输出,但是当我尝试 运行 这个代码时:
#include <iostream>
using namespace std;
int fun(int x){
if (x>0){
return fun(x-1);
cout<<x<<endl;
}
}
int main()
{
int x=3;
fun(x);
return 0;
}
我收到此警告:
warning: control reaches end of non-void function
为什么不 return 值并调用 fun(x-1)
?
但是下面的代码工作得很好。我得到 3 2 1
作为输出。
#include <iostream>
using namespace std;
int fun(int x){
if (x>0){
cout<<x<<endl;
return fun(x-1);
}
}
int main()
{
int x=3;
fun(x);
return 0;
}
函数一旦 return
就不能再执行任何代码:
if (x>0){
return fun(x-1);
cout<<x<<endl; // <-- NEVER EXECUTED
}
警告是因为你的函数有一个非 void
return 类型,但当 x
是 [=16= 时没有 return
任何值],从而导致 未定义的行为。
试试这个:
#include <iostream>
using namespace std;
int fun(int x){
if (x>0){
int ret = fun(x-1);
cout << x << endl;
return ret;
}
return 0;
}
int main()
{
fun(3);
return 0;
}