Ошибка переполнения стека при попытке создать калькулятор показателей с использованием рекурсии в Java - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь сделать простой калькулятор для практики рекурсии. Это мой код, и я получаю ошибку переполнения стека. Мне не обязательно заботиться о коде, чтобы заставить это работать, так как я хочу сам разобраться с этим, но я не уверен, почему я получу ошибку стека по потоку для этого.

Объявлено в моем основном:

int base=3,exponent=4;

Мой метод экспоненты:

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

}

1 Ответ

1 голос
/ 09 октября 2019

У меня есть как минимум три ошибки, которые я вижу. x 0 - это один (не ноль). Вы должны обработать случай x 1 (который является x). И, когда вы делаете рекурсию, вы хотите пройти base и n - 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);
}
...