我正在编写一个拼写检查程序,我必须编写的功能之一必须为拼写错误的单词找到建议。因此,我使用递归来遍历我的基数树并找到所有建议。但是,当我的递归执行时,我使用的计数器之一不断增加,然后减少,然后再次增加,而实际上它应该只是增加。这是该函数的代码。
public void findSuggest(Edge tmp, String suffix, int app)
{
int used = 0;
if(tmp.tNode.children > 10)
{
used = 10;
}
else
{
used = tmp.tNode.children;
}
for(int j = 0; j < used; j++){
if(app <= 9)
{
if((!"#".equals(tmp.prefix))&&(!"#".equals(tmp.tNode.edges[j].prefix))){
suggest[app].append(tmp.prefix);
suggest[app].append(tmp.tNode.edges[j].prefix);
System.out.println("tmp.prefix: " + tmp.prefix);
System.out.println("tmp.prefix............: " + tmp.tNode.edges[j].prefix);
app++;
if(tmp.tNode.edges[j].tNode != null)
{
suggest[app].append(tmp.prefix);
System.out.println("App: " + app);
findSuggest(tmp.tNode.edges[j], suffix, app++);
}
}
}
}
}
这是我得到的输出: App 是计数器, tmp.prefix 是父节点的前缀, tmp.prefix....... 是子节点的前缀。
应用程序:0
tmp.prefix: t
tmp.prefix…………:e
应用:1
tmp.prefix: e
tmp.prefix…………:s
应用:2
tmp.prefix: t
tmp.prefix............:我
应用:3
tmp.prefix: 我
tmp.prefix…………:c
应用:4
tmp.prefix: c
tmp.prefix............:人
应用:5
tmp.prefix: 我
tmp.prefix…………:se
应用:6
tmp.prefix: se
tmp.prefix…………:d
应用:7
tmp.prefix: se
tmp.prefix…………:s
应用:7
tmp.prefix: 我
tmp.prefix…………:ze
应用:8
tmp.prefix: 泽
tmp.prefix…………:d
应用:9
tmp.prefix: 泽
tmp.prefix…………:s
应用:4
tmp.prefix: t
tmp.prefix............:是的
应用程序:0
tmp.prefix: x
tmp.prefix…………:e
应用:1
tmp.prefix: e
tmp.prefix…………:d
应用:2
tmp.prefix: e
tmp.prefix…………:s
应用:2
tmp.prefix: x
tmp.prefix............: ing
(这是所有单词建议的构建字符串数组的最终结果)
气候
气候限制
气候变化
气候
气候学
气候
气候
气候大小
气候
气候