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;
}