Recursion 递归不能正常工作

Recursion 递归不能正常工作,recursion,Recursion,这是一个尝试求解Euler#60的递归解算器。 解算器会运行,但无法为最后一个数组成员找到解决方案,因此会回溯(就像我认为应该的那样),但当我返回到第一个数组成员时,循环会一直运行。谁能告诉我为什么它不在下一个黄金时段停止 我只在下面发布了解算器函数;另一个函数(Concat check)工作正常,对于部分填充的数组返回true int Solver (int primes[5]) { int i=1; int x=0; while (primes[x]!=0) {++

这是一个尝试求解Euler#60的递归解算器。 解算器会运行,但无法为最后一个数组成员找到解决方案,因此会回溯(就像我认为应该的那样),但当我返回到第一个数组成员时,循环会一直运行。谁能告诉我为什么它不在下一个黄金时段停止

我只在下面发布了解算器函数;另一个函数(Concat check)工作正常,对于部分填充的数组返回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;
}
int解算器(int素数[5])
{
int i=1;
int x=0;
而(素数[x]!=0){++x;}//处理下一个
if((x>5)&&Concat_Check(primes)){return 1;}//已解数组

因为(i=3;i我无法在代码中实现递归的目的,似乎是一个循环。。。 无论如何,可能您忘记了在循环中递增
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;}
  }
}

for(i=3;iI)是递归的,因为我找到的下一个素数现在可能会工作,但最终不会成为一个解决方案。不过,我喜欢你的双增量思想——在偶数上浪费循环是没有意义的!