这是一个尝试求解 Euler#60 的递归求解器。 http://projecteuler.net/problem=60 求解器运行,但未能找到最后一个数组成员的解决方案,所以回溯(就像我认为应该的那样)但是当我回到第一个数组成员时,循环一直用完。谁能帮我找出为什么它不会在下一个素数停止?
我只在下面发布了求解器函数;另一个函数(Concat 检查)正常工作,并为部分填充的数组返回 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;
}