当我删除 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
,则返回string
o
。但是如果你输入 else 块,你还必须返回一个string
,因为如果play(i+1)
的条件成功,它将返回一个字符串,但除此之外什么都不会返回(除了运行另一个调用)。而且你不想得到任何东西,你想拿回由此产生的string
.
换句话说,当子函数返回一个string
时,当前函数需要将其传递给其父函数,依此类推。如果子函数条件成功并且您错过了 return 语句,您将永远不会将此结果传递给父函数,最后,您将在顶部不返回任何内容(意外行为或错误,老实说我没有尝试)。
顺便说一下,您正在运行的代码非常危险。如果传入参数int
大于3
,递归将无休止地运行,添加play()
调用,直到内存不足。
我希望它能回答你的问题:)