関数の実行が非常に遅いため、反復に変更する必要がある関数があります。
2つの再帰呼び出しがあり、どちらの条件が真であるかによって異なります。
これは次のようなものです:(
私は関数の外にクラスの静的配列を持っています、たとえばデータ)
void func(int a, int b, int c, int d) {
//something
//non-recursive
//here..
for (i=0; i<data.length; i++) {
if (!data[i].x) {
data[i].x = 1;
if (a == data[i].value1)
func(data[i].value2,b,c,d);
else if (a == data[i].value2)
func(data[i].value1,b,c,d);
data[i].x = 0;
}
}
}
!!
編集:これが私のアルゴリズムです:http://pastebin.com/F7UfzfHv
関数は、グラフ内のあるポイントから別のポイントへのすべてのパスを検索しますが、一意の頂点のみである1つのパスのみを(配列に)返します。!!
そして、それを管理する良い方法はスタックを使用することだと私は知っています...しかし、私はその方法がわかりません。誰かが私にそれについてのヒントを教えてもらえますか?