е к степени х в С

Я пытаюсь найти е к власти х. Пожалуйста, укажите, что может быть не так с моей текущей реализацией, вместо того, чтобы просто предлагать новые / более эффективные решения (я мог найти много в сети). Кажется, есть логическая ошибка или ошибка времени выполнения, отладка ничего не показывает. Заранее спасибо!

библиотека cmath включена, программа компилируется нормально .. останавливается при запуске

double find_e_power_x(int x){
int i = 1, j = 1, count = 1, accuracy = 15;
double xd = static_cast<double>(x); //pow takes double args
double jd = static_cast<double>(j);
double epx = 1.0;
while ( count < accuracy ){
while ( ++i && ++j) {
epx += ( pow(xd,jd) / fact(i) ); //static_cast
count++;
}
}
return epx;
}

В ответ на комментарии (указывая на мой бесконечный внутренний цикл),

РЕДАКТИРОВАТЬ:

while ( count < accuracy ){
epx += ( pow(xd,jd) / fact(i) ); //static_cast
count++;
i++;
j++;
}

вход = 3 ответ неправильный, хотя он выдает результат как 3.15485


ниже Окончательный вариант работает отлично

я / р = 4

о / р = 54,8278

double find_e_power_x(int x){
int i = 1, count = 1, accuracy = 15;
double xd = static_cast<double>(x); //pow takes double args
double id = static_cast<double>(i);
double epx = 1.0;
while ( count < accuracy ){
epx += ( pow(xd,id) / fact(i) ); //static_cast
++count;
++id;
++i;
}
return epx;
}

2

Решение

Вы увеличиваете j каждый раз вокруг вашей петли, но не jd, Поэтому ваше выражение:

epx += ( pow(xd,jd) / fact(i) ); //static_cast

эффективно:

epx += ( pow(xd, 1.0) / fact(i) ); //static_cast

каждый раз.

Переместить эту строку:

double jd = static_cast<double>(j);

внутри вашей петли или просто увеличить jd непосредственно.

6

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]