私はスペル チェッカー プログラムを書いています。私が書かなければならない関数の 1 つは、スペル ミスのある単語の候補を見つける必要があります。したがって、再帰を使用して基数ツリーをたどり、すべての提案を見つけています。ただし、再帰が実行されると、使用するカウンターの1つが増加し続け、実際には増加するはずなのに、減少してから再び増加します。関数のコードは次のとおりです。
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............: i
アプリ: 3
tmp.prefix: i
tmp.prefix.....................: c
アプリ: 4
tmp.prefix: c
tmp.prefix.....................: al
アプリ: 5
tmp.prefix: i
tmp.prefix.....................: se
アプリ: 6
tmp.prefix: せ
tmp.prefix.....................: d
アプリ: 7
tmp.prefix: せ
tmp.prefix.....................: s
アプリ: 7
tmp.prefix: i
tmp.prefix.....................: ze
アプリ: 8
tmp.prefix: ze
tmp.prefix.....................: d
アプリ: 9
tmp.prefix: ze
tmp.prefix.....................: s
アプリ: 4
tmp.prefix: t
tmp.prefix............: ure
アプリ: 0
tmp.prefix: ×
tmp.prefix.....................: e
アプリ: 1
tmp.prefix: e
tmp.prefix.....................: d
アプリ: 2
tmp.prefix: e
tmp.prefix.....................: s
アプリ: 2
tmp.prefix: ×
tmp.prefix............: ing
(これは、すべての単語候補の構築された文字列配列の最終結果です)
気候
気候変動
気候変動
気候
気候学
気候
クライマイズ
気候サイズ
気候化された
気候