Почему моя реализация рекурсивной POW (x, n) вызывает переполнение стека для большого N? [дублировать]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему моя реализация рекурсивной POW (x, n) вызывает переполнение стека для большого N? [дублировать]

Сообщение Anonymous »

Я пытаюсь реализовать функцию рекурсивной мощности в C ++, но она не удается с большим N из -за переполнения стека. Вот код: < /p>

Код: Выделить всё

class Solution {
public:
double myPow(double x, int n) {
long long exp = n;
if (exp < 0) {
x = 1 / x;
exp = -exp;
}
return pow(x, exp);
}

double pow(double x, long long n) {
if (n == 0) return 1;
return x * pow(x, n - 1); // Recursive call
}
};
< /code>
Это хорошо работает для небольших значений n, но когда я запускаю его для больших значений, таких как < /p>
myPow(2.0, 1000000000)
, я получаю ошибку переполнения стека. /> То, что я попробовал: < /p>
Я попытался использовать длинный длинный, чтобы избежать целочисленного переполнения. < /p>
Я подозреваю, что слишком много рекурсивных вызовов могут быть проблемой.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... -for-large
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»