[英]Recursion with termination condition Java
我正在教自己在java中遞歸調用方法。 我經常在我的實現上得到StackOverFlowError
:
public class LimitedRecursion {
public void m(int limit) {
if (limit == 0) {
System.out.println("finished2");
}
m(limit - 1);
}
}
我已經將限制設置為42。 有人能指出我正確的方向嗎? 它應該終止一次limit == 0
這不會完成遞歸,因為在滿足條件時不退出方法,並且仍然進行下一次遞歸調用( m(limit - 1);
):
if (limit == 0) {
System.out.println("finished2");
}
m(limit - 1);
這將結束遞歸:
if (limit == 0) {
System.out.println("finished2");
return;
}
m(limit - 1);
正確的遞歸可以是:
public class LimitedRecursion {
public void m(int limit) {
if (limit == 0) {
System.out.println("finished2");
} else {
m(limit - 1);
}
}
}
像這樣的東西,添加一個return statement
public static void main(String[] args) {
System.out.println(m(5));
}
public static String m(int limit) {
if (limit == 0) {
return "finished";
}
return m(limit - 1);
}
產量
finished
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.