【问题标题】:Stack Overflow Error when trying to create an exponent calculator using recursion in java尝试在java中使用递归创建指数计算器时出现堆栈溢出错误
【发布时间】:2020-02-06 07:26:12
【问题描述】:

我正在尝试制作一个简单的计算器来练习递归。这是我的代码,我收到堆栈溢出错误。我不一定关心使这项工作的代码,因为我想自己弄清楚,但我不确定为什么我会为此收到堆栈溢出错误。

在我的主要声明中:

int base=3,exponent=4;

我的指数法:

static int powerN(int base, int n) 
{   
    if ( n == 0 ) return 0;
    return base * powerN (1, n-(n-1));

}

【问题讨论】:

  • 除非n 开始时为零,否则n-(n-1) 将始终为1;你永远不会满足n==0 的基本情况,只是永远称呼自己,直到......堆栈溢出!你确定你不想要n-1 而不是n-(n-1)

标签: java recursion stack overflow


【解决方案1】:

我可以看到至少三个错误。 x0 是一(不是零)。您应该处理 x1 (即 x)的情况。而且,当你递归时,你想通过 basen - 1 (因为你正在递归 1 的幂 - 这将永远是 1)。喜欢,

static int powerN(int base, int n) {
    if (n == 0) {
        return 1;
    } else if (n == 1) {
        return base;
    }
    return base * powerN(base, n - 1);
}

【讨论】:

  • 谢谢,这是有道理的。我现在可以看到我的逻辑有缺陷的地方。
猜你喜欢
  • 1970-01-01
  • 2016-12-30
  • 1970-01-01
  • 2014-05-04
  • 2018-03-10
  • 2014-08-27
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
相关资源
最近更新 更多