C++ 递归过程中的运行时错误

C++ 递归过程中的运行时错误,c++,runtimeexception,C++,Runtimeexception,我在递归调用函数的帮助下编写程序,我得到正确的输出,直到我的测试输入在递归的10个步骤内得到解决,但如果我将输入值增加到11,它开始给出运行时错误,如下所示: 分段故障(堆芯转储) 该函数的代码段为: void find(int x) { if(ctr==n-1) { po[k]=x; k++; ctr--; return; } else { ctr++; find(x+a);

我在递归调用函数的帮助下编写程序,我得到正确的输出,直到我的测试输入在递归的10个步骤内得到解决,但如果我将输入值增加到11,它开始给出运行时错误,如下所示: 分段故障(堆芯转储)

该函数的代码段为:

void find(int x) {    
    if(ctr==n-1) {
        po[k]=x;
        k++;
        ctr--;
        return;
    } else {
        ctr++;
        find(x+a);
        ctr++;
        find(x+b);  
        ctr--;
        return;
    }
}

我运行了它,它需要在
po
中为x=11的1024项留出空间,

您只有1000

订单的大小是多少?您的初始采购订单似乎是int po[10]。所有零件都不在这里。如何声明和初始化ctr,n,k,a&b?它是1000,即int po[1000]n是11,a是3,b是5ctr=0,它被初始化为一个全局变量对于像58或soI这样的大值我声明po[1024]是全局变量对于像58这样的大值,你需要2^57项,这在大多数计算机中是不合适的。重新思考如何得出最终答案。