Знак возведения в степень - Turbo Pascal
Формулировка задачи:
Возведение числа в степень в Basicax выполняется с помощью знака возведения в степень (^). Например: N = a ^ 7.
А в Паскале такого знака нет; получается, что надо 7 раз перемножить
a * a * a * a * a * a * a . А по другому как-нибудь можно?
Решение задачи: «Знак возведения в степень»
textual
Листинг программы
{ быстрое возведение a в целую степень n }
function iPwr(a: Real; n: Integer): Real;
var r: Real;
begin
if a=0 then iPwr:=0
else if n<0 then iPwr:=1/iPwr(a,-n)
else if n=0 then iPwr:=1
else begin
r:=1;
while n>0 do begin
if Odd(n) then r:=r*a;
n:=n div 2; a:=Sqr(a);
end;
iPwr:=r;
end;
end;
Объяснение кода листинга программы
- Функция iPwr принимает два аргумента: a (коэффициент, возводимый в степень) и n (степень, в которую возводится a).
- Если a равно нулю, то функция возвращает ноль.
- Если n меньше нуля, функция возвращает 1/iPwr(a,-n). Это означает, что мы делим результат возведения a в степень -n на iPwr(a,-n).
- Если n равно нулю, функция возвращает 1. Это означает, что мы возводим a в степень 1.
- Если n больше нуля, то мы инициализируем переменную r единицей.
- Затем мы выполняем цикл while n > 0.
- Внутри цикла мы проверяем, является ли n четным числом. Если да, то умножаем r на a.
- Затем делим n на 2 и возводим a в квадрат.
- После этого iPwr(a) будет содержать результат возведения a в степень n.
- Наконец, мы устанавливаем значение iPwr равным r.
- Конец функции.