簡體   English   中英

Java中的遞歸無限循環

[英]Recursion Infinite loop in java

我有一個遞歸方法,我試圖完成。 在二進制搜索樹中以平衡方式將元素添加到數組中的位置。

public void addBalanced(String file){
    addToArrayList(file);
    addBalanced(a,0, a.size()-1);
}
 private void addBalanced(ArrayList<String> list,int start, int end){
     int middle = (start+end)/2;
     bst.add(list.get(middle));
     if(list.size() == 0){
         return;
     }else if (list.size() == 1){
         bst.add(a.get(0));
     } else if(start >= end){
         return;
     }
     addBalanced(list,start, middle-1);
     addBalanced(list,middle+1, end);

 }

變量a是數組列表,它等於文件所包含的行數。變量BST是二進制搜索樹

我可以說出它是無限循環的,並且不確定如何解決它。 我嘗試為大小為0和1的數組添加一個基本案例,但是它仍然停留在循環中。

public static void main(String[] args) {
    BSTSpellChecker<String> foo = new BSTSpellChecker<>();
    foo.addBalanced(foo.getFilePath());

}

這是測試文本文件:

aah aahed aahing aahs aardvark aardvarks aardwolf ab abaci aback算盤算盤abaft abalon

如果list的初始大小為1 ,它將永遠不會停止

方法內的List未更改。 因此它的大小不能為零。 如果它的大小為1,則第二次else if塊每次執行,則不進行第三次

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM