Возвести число в отрицательную степень - Turbo Pascal (29959)
Формулировка задачи:
Условие:Дано действительное положительное число a и целоe число n.
Вычислите an. Решение оформите в виде функции power(a, n).
Стандартной функцией возведения в степерь пользоваться нельзя.
Вот сам код,но почему то иногда дает неправильный ответ,хотя все первые тесты проходят.Не могли бы вы подсказать,где ошибка?
Решение задачи: «Возвести число в отрицательную степень»
textual
Листинг программы
function Pow(a: Real; n: Integer): Real; var r: Real; begin if a=0 then begin Pow:=0; Exit; end; if n<0 then begin Pow:=1/Pow(a,-n); Exit; end; r:=1; while n>0 do begin if Odd(n) then r:=r*a; n:=n div 2; a:=a*a; end; Pow:=r; end;
Объяснение кода листинга программы
- Функция
Pow
принимает два аргумента:a
(которое возводится в отрицательную степень) иn
(степень, в которую нужно возвестиa
). - Если
a
равно нулю, то функция возвращает ноль. - Если
n
меньше нуля, то функция возвращает обратное значениеPow(a,-n)
. - Создается переменная
r
и присваивается ей значение единицы. - Создается цикл
while
, который выполняется до тех пор, покаn
больше нуля. - В каждой итерации цикла проверяется, является ли
n
нечетным числом. Если это так, то значениеr
умножается наa
. n
делим на два, аa
возводим в квадрат.- После завершения цикла значение
r
становится результатом функцииPow
. - Функция возвращает значение
r
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д