所以我正在编写一个程序,主要是说一个单词是否在提供的字典中。字典是randomaccessfile,与字典对应的索引也是randomaccessfile。这两个文件都很大。
我使用递归二进制搜索来检查单词是否在字典中。当我做indexFile.lenth()/ 4来获取索引的最大长度,然后计算mid并做indexFile.seek(4 * mid)我得到一个堆栈溢出错误,我不明白为什么
long mid = (max - min)/2;
indexFile.seek(4*mid);
int wordposition = indexFile.readInt();
int nextword = indexFile.readInt();
int wordlength = (nextword - wordposition)/2;
wordsFile.seek(wordposition);
String finalword = "";
for(int i=0; i<wordlength;i++);
{
finalword = finalword + wordsFile.readChar();
}
if (word.equals(finalword))
{
return word;
}
else if (finalword.compareTo(word) > 0)
{
binarysearch(word, min, (mid - 1));
}
else
{
binarysearch(word, (mid+1), max);
System.out.println("yoooo");
}
if (min > max)
{ return "Word not found";}