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语句完成的?@ahmaddiddiquireturn
将只获取值,可能来自my_函数(input)
的结果,作为当前函数的结果。不管发生什么,递归都会发生,但它是死代码,因为在不传递、返回或赋值的情况下,不使用值。