Word.exe 已停止使用递归工作



当我删除 else 部分中的返回时,代码抛出单词.exe已停止工作 我尝试调试,当基本条件为真并且"i"在"i"等于 1 时开始递减时,它会抛出错误

string o = "555";
string play(int i){
if(i == 3) return o;
else
return play(i+1);
}

不能删除return语句。

事实上,play()返回一个string。因此,如果条件为true,则返回stringo。但是如果你输入 else 块,你还必须返回一个string,因为如果play(i+1)的条件成功,它将返回一个字符串,但除此之外什么都不会返回(除了运行另一个调用)。而且你不想得到任何东西,你想拿回由此产生的string.

换句话说,当子函数返回一个string时,当前函数需要将其传递给其父函数,依此类推。如果子函数条件成功并且您错过了 return 语句,您将永远不会将此结果传递给父函数,最后,您将在顶部不返回任何内容(意外行为或错误,老实说我没有尝试)。


顺便说一下,您正在运行的代码非常危险。如果传入参数int大于3,递归将无休止地运行,添加play()调用,直到内存不足。

我希望它能回答你的问题:)

最新更新