Возведение в степень в паскале

 

Вопросы "возвденеие в степень pascal" или "возведение в степень на Паскале" являются наиболее популярными в своей тематике. Не всегда представляется возможным умножать число само на себя (например x := x * x;) в силу динамично изменяющихся параметров задачи, да и при больших показателях степени размер кода может увеличиться во много раз. Кроме того, подобное выражение не предусматривает возможность возведения числа в дробную степень.

Возведение в степень в паскале можно реализовать несколькими способами. Рассмотрим их, установив преимущества и недостатки каждого

 

Универсальная функция возведения в степень в pascal

 

Самый эффективный и правильный способ - взятие экспоненты от логарифма Exp(X*Ln(Y)), где X - степень числа, Y - основание. Однако, необходимо учитывать частные случаи когда основание или степень отрицательные числа, либо когда один из них является нулем. Также необходимо учесть тот факт, что при возведении отрицательного числа в четную степень, результат становится положительным

 

if (x < 0) then pow := (-1)*Exp(y*Ln(Abs(x))) else

if (x > 0) then pow := Exp(y*Ln(Abs(x))) else

Pow := 0;

l := round(y);

if (l mod 2 = 0) then R:=Abs(pow);

if (y = 0) then Pow :=1;

 

 

Возведение в степень с помощью цикла

 

Является одним из самых простых и быстрых способов. Задается цикл от единицы до требуемого показателя, в котором основание складывается с самим собой. Организовать подобный алгоритм можно использовав как for, так и while или repeat.

 

readln(x,pow);

for i:=1 to pow-1 do

x:= x + x;

if ((not odd(pow)) and (pow<0)) then x := x * (-1);

writeln('x^Pow=', x);

 

 

Возведение в степень с помощью рекурсии

 

Аналогично предыдущему итерационному способу. Отличие заключается только в том, что вместо очередного вызова тела цикла используется вызов функции (рекурсия).

 

Возведение в степень в pascal для целого показателя, вычисляемого за время log2(pow)

 

Данный алгоритм также, как и два предыдущих работает только с целыми показателями степени. Однако, время затрачиваемое на вычисление существенно сокращается.

 

function power (x,pow:integer):integer;

var res: integer;

begin

res := 1;

while (pow > 0) do

begin

if (pow and 1 = 1) then res := res * x;

x := x + x;

pow := pow shr 1;

end;

power := res;

end;

 

 

Таким образом, возвести число в степень в паскале с дробным показателем может позволить только универсальная функция возведения в степень. Использование первого способа является наиболее быстродейственным. Это особенно заметно, при больших значениях степени и большого числа знака после запятой. Следует отметить, что помимо перечисленных выше способов существуют и другие алгоритмы реализующие в Turbo Pascal возведение в степень.

 


 

Скачать:

Возведение в степень в pascal - Универсальная функция возведения в степень (1 способ)

Функция Power - Простое итерационное вычисление степени с помощью цикла (2 способ)

Рекурсивное возведения числа в степень - Возведение числа в степень с помощью рекурсии (3 способ)

Быстрое возведение в степень в паскале - Алгоритм с вычислением за время log2(pow) (4 способ)

офисная мебель
С информацией по модернизации сайта bpascal.ru, техническим неисправностям, а также вопросами по размещению рекламы обращаться по адресу ShekhovtsovY@yandex.ru. Ваше заявление будет рассмотрено в кратчайшие сроки.
© Шеховцов Юрий, 2010-2011