递归不正常

时间:2013-08-29 04:32:48

标签: recursion

这是一个尝试解决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;
}

1 个答案:

答案 0 :(得分:0)

我无法在你的代码中得到递归的目的,似乎是循环... 无论如何,也许你忘了在循环中增加x,测试似乎不完整。

for (i=3; i<=SIZE; i+=2) //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;}
  }
}