0

Euler#60 を解こうとする再帰的ソルバーです。 http://projecteuler.net/problem=60 ソルバーは実行されますが、最後の配列メンバーの解を見つけることができないため、バックトラックします (想定されているように) が、最初の配列メンバーに戻ると、ループが尽きる。次の素数で止まらない理由を誰か教えてくれませんか?

以下にソルバー関数のみを投稿しました。もう 1 つの関数 (連結チェック) は正常に機能し、部分的に埋められた配列に対して true を返します。

int Solver (int primes[5])
{
    int i=1;
    int x=0;

    while (primes[x]!=0) {++x;} //work on the next one

    if ((x>5) && Concat_Check(primes)) {return 1;} //solved array

    for (i=3; i<=SIZE; i++) //try each value, if successful, return true
    {
      if (Is_Prime(i)) {primes[x]=i; cout<<"primes["<<x<<"] = "<<i<<endl;}
      if ((Concat_Check (primes)) && Solver (primes)) {return 1;}
    }
    primes[x-1] = 0;
    return 0;
}
4

1 に答える 1