【问题标题】:Runtime Error During Recursion递归期间的运行时错误
【发布时间】:2014-10-01 00:19:09
【问题描述】:

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

函数的代码sn-p是:

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的大小是多少?看来您最初的 po 是 int po[10]。
  • 所有作品都不在这里。 ctr, n, k, a & b 是如何声明和初始化的?
  • 它是 1000,即 int po[1000]
  • n 是 11 a 是 3 b 是 5
  • ctr=0 初始化为全局变量

标签: c++ runtimeexception


【解决方案1】:

我运行了它,它需要在 po 中为 1024 个 x=11 的项目提供空间,
你只有 1000

【讨论】:

  • 58左右的大值怎么办
  • 我已将 po[1024] 声明为全局变量
  • 对于像 58 这样的大值,您需要 2^57 个项目,这在大多数计算机中是不适合的。重新考虑如何获得最终答案。
猜你喜欢
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 2021-04-25
相关资源
最近更新 更多