void function ()
{
if (condition)
{
// do something
}
else if (other condition)
{
// go back to main()
}
function();
}
在这里,无论我将“ go back to main()”替换为什么,该函数将始终调用自身。
return;
exit;
break;
上面的代码不起作用。有人可以帮忙吗?
答案 0 :(得分:1)
糟糕的答案:
setjmp();
longjmp();
答案 1 :(得分:0)
听起来像您的问题是if {} else if
,它不能涵盖所有情况。通常,递归是这样的:
void function () {
if (condition) {
function();
} else {
return;
}
}
答案 2 :(得分:0)
您并没有真正回到main()
。那不是您的选择。 return
将控件发送回调用方函数。您的代码可以完美运行的情况是,它根本没有到达递归调用。也就是说,如果它到达了else
块并返回给调用者,即main
。
但是从第二次开始,呼叫者不再是main()
。而是,调用者是函数本身。因此,从第二次开始,即使条件不匹配,也会返回到函数本身,此后将再次调用该函数。