跳出for循环包括带for循环的递归方法(Java)
Jumping out of for-loop including a recursive method with for-loop (Java)
这是我的第一个 post,很抱歉,如果我 post 不正确或不完整,我会回答每个问题,并且愿意改进。
我的main方法有一个for循环,里面有一个递归方法,递归方法也有一个for循环(递归方法基本上代替了很多嵌套的for循环)。当遇到特定情况时,我想跳出递归方法,跳出我的 main.c 中的 for 循环。对于可视化:
public static void main(..)
for (int i = 0, i < 100 ; i++) {
//do something
recursivemethod(...)
}
//jump here, if case in method is reached
------------------------
recursivemethod (...)
for (int i = 0; i < 10 ; i++) {
//do something
if (case reached) {//jump out of loop in main}
else {recursivemethod(modified)}
}
因为我无法在 main 中标记我的 for 循环和在我的方法中标记 break Label;
(据我所知),我尝试使用布尔值,但由于 for 循环 and/or 递归调用,布尔值切换回来,没有想要的效果。
有一个 similar question 用户后来添加了他的解决方案,但没有详细说明它让我理解以及如何在我的代码中实现它,用户最后一次出现是在几年前,所以我不能问他。有人可以帮我吗?
非常感谢!
您可能想从递归方法中 return 布尔值。例如true 表示递归 call8ng 应该停止并退出循环
for (int i = 0, i < 100 ; i++) {
//do something
if(recursivemethod(...))
break;
}
递归方法
boolean recursivemethod (...) {
for (int i = 0; i < 10 ; i++) {
//do something
if (case reached) {return true;}
else {return recursivemethod(modified)}
return false;
}
}
这是我的第一个 post,很抱歉,如果我 post 不正确或不完整,我会回答每个问题,并且愿意改进。
我的main方法有一个for循环,里面有一个递归方法,递归方法也有一个for循环(递归方法基本上代替了很多嵌套的for循环)。当遇到特定情况时,我想跳出递归方法,跳出我的 main.c 中的 for 循环。对于可视化:
public static void main(..)
for (int i = 0, i < 100 ; i++) {
//do something
recursivemethod(...)
}
//jump here, if case in method is reached
------------------------
recursivemethod (...)
for (int i = 0; i < 10 ; i++) {
//do something
if (case reached) {//jump out of loop in main}
else {recursivemethod(modified)}
}
因为我无法在 main 中标记我的 for 循环和在我的方法中标记 break Label;
(据我所知),我尝试使用布尔值,但由于 for 循环 and/or 递归调用,布尔值切换回来,没有想要的效果。
有一个 similar question 用户后来添加了他的解决方案,但没有详细说明它让我理解以及如何在我的代码中实现它,用户最后一次出现是在几年前,所以我不能问他。有人可以帮我吗?
非常感谢!
您可能想从递归方法中 return 布尔值。例如true 表示递归 call8ng 应该停止并退出循环
for (int i = 0, i < 100 ; i++) {
//do something
if(recursivemethod(...))
break;
}
递归方法
boolean recursivemethod (...) {
for (int i = 0; i < 10 ; i++) {
//do something
if (case reached) {return true;}
else {return recursivemethod(modified)}
return false;
}
}