[英]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.