C++ 为什么这里有两个返回值?
第一个:C++ 为什么这里有两个返回值?,c++,recursion,C++,Recursion,第一个: int main(){ int recurse(int); int a=recurse(0); printf(" return %d",a); } int递归(int c){ //printf(“%d”,c); if(c我认为这是因为在第二个函数中没有else,return语句不是if语句的一部分。这意味着它将执行if循环,然后独立于if循环返回c。第一个函数显示未定义的行为,因为在所有执行分支中都没有return语句 该功能需要: int recurse(int c){ //pr
int main(){
int recurse(int);
int a=recurse(0);
printf(" return %d",a);
}
int递归(int c){
//printf(“%d”,c);
if(c我认为这是因为在第二个函数中没有else,return语句不是if语句的一部分。这意味着它将执行if循环,然后独立于if循环返回c。第一个函数显示未定义的行为,因为在所有执行分支中都没有return
语句
该功能需要:
int recurse(int c){
//printf("%d", c);
if(c<10){
recurse(c+1);
}
return(c);
}
其实这个功能
int recurse(int c){
if(c<10){
return recurse(c+1); // Add return
}
return(c);
}
int recurse(int c){
//printf("%d", c);
if(c<10){
recurse(c+1);
}else{
return(c);
}
}
当然,如果没有递归,它可以编写得更简单:)
int递归(int c)
{
返回c<10?10:c;
}
int recurse(int c){
if(c<10){
return recurse(c+1); // Add return
}
return(c);
}
int recurse(int c){
//printf("%d", c);
if(c<10){
recurse(c+1);
}else{
return(c);
}
}
int recurse(int c){
//printf("%d", c);
if(c<10){
recurse(c+1);
}
return(c);
}
int recurse( int c )
{
return c < 10 ? recurse( c + 1 ) : c;
}
int recurse( int c )
{
return c < 10 ? 10 : c;
}