Function 递归函数是否需要if语句之外的返回值

Function 递归函数是否需要if语句之外的返回值,function,c++11,recursion,return,Function,C++11,Recursion,Return,我的代码是这样的: string my_function(string input) { if (sentinel reached) { return output; } else { //do something to change the string and get closer to the sentinel my_function(input); } } 如您所见,它是一个递归函数,用于检查是否已达到sentinel值,并在该点返回函数的输出。如果没有,

我的代码是这样的:

string my_function(string input)
{
 if (sentinel reached)
  {
   return output;
  }
 else
 {
  //do something to change the string and get closer to the sentinel
  my_function(input);
 }
}
如您所见,它是一个递归函数,用于检查是否已达到sentinel值,并在该点返回函数的输出。如果没有,它将对字符串执行一些操作,然后在递归中执行自身


因为if语句中有一个返回函数,而且函数总是会到达那个点,所以我需要在else语句之后返回。它似乎没有必要,因为return语句永远不会执行

您确实需要一个
return
子句,但它应该是
returnmyu函数(input)
else
分支内,否则当到达sentinel时获得的最终结果将不可用,因为堆栈被解回到原始调用。

如果您对递归进行了足够好的编程,使sentinel最终 则对该函数的一些调用将到达“if”分支 “如果”语句的定义

但是如果函数确实需要递归,也就是说,如果 在第一次调用此函数之前不是真的, 然后,对函数的第一次调用将执行“else”子句,然后 ... 什么?这个函数应该返回一些东西,但是你没有 说什么回报

事实上,在“else”子句中的递归过程中 (递归)对同一函数的调用执行“if”子句, 不告诉函数的第一次调用要执行的操作。它只能这样做 你真正告诉它的

编辑:代码将被编译,但不会返回有意义的值 即使发生一级递归。编译器可能会发出警告
关于缺少返回值的问题,您应该注意。

您应该
将my_函数(输入)
返回到管道输出UTC++代码允许函数不返回值,因此代码将编译,尽管行为未定义。@templatetypedef您是对的,我对答案进行了相应的编辑。你是说递归操作是通过return语句完成的?@ahmaddiddiqui
return
将只获取值,可能来自
my_函数(input)
的结果,作为当前函数的结果。不管发生什么,递归都会发生,但它是死代码,因为在不传递、返回或赋值的情况下,不使用值。