所以幾個星期我一直在試圖來回創建以下代碼到一個遞歸方法...爪哇 - 做一個二進制搜索遞歸
public static int binarySearch(Comparable[] objArray,Comparable item)
{
int lower=0;
int upper=objArray.length -1;
int i=-1; // if -1 is returned the search failed;
int compareResult;
boolean found= false;
while ((lower<=upper)&& (!found))
{
i=(lower+upper)/2;
compareResult=item.compareTo(objArray[i]);
if (compareResult<0)
{
upper=i-1;
}
else
if (compareResult>0)
{
lower=i+1;
}
else
{
found=true; //item found in spot i
}
}// end of while
if (found==false) return -1; else return i;
}
我知道我必須重新定義了整數和使用幾個ifs,但沒有一個while循環我不明白如何得到我想要的最終遞歸代碼。有什麼建議麼?由於
-D
「沒有一個while循環我不明白如何得到最終的遞歸代碼」......你通過遞歸調用來實現。你沒有得到關於課堂遞歸的解釋嗎? – 2010-12-08 20:32:34
@Karl - 可能不是:P – 2010-12-08 20:34:01