Написать программу, вычисления степени по "индийскому алгоритму" - Turbo Pascal
Формулировка задачи:
Написать программу, вычисления степени по "индийскому алгоритму" с использованием формул:
при n=1 x^n=x
при n>1 x^=x^(n mod 2)*sqr(x^(ndiv2))
Решение задачи: «Написать программу, вычисления степени по "индийскому алгоритму"»
textual
Листинг программы
function powIndy(x : Real; n : Integer) : Real;
begin
if n = 0 then powIndy := 1
else if n = 1 then powIndy := x
else powIndy := powIndy(x, n mod 2) * sqr( powIndy(x, n div 2) );
end;
var
x : Real;
n : Integer;
begin
Write('x = '); ReadLn(x);
Write('n = '); ReadLn(n);
WriteLn('x^n = ', powIndy(x, n));
end.
Объяснение кода листинга программы
- В функции
powIndyопределяется формула для вычисления степени поиндийскому алгоритму. - Формула представлена в виде рекурсии с базовыми условиями: если
nравно 0, то результат равен 1, иначе еслиnравно 1, то результат равенx, иначе результат вычисляется как произведение двух предыдущих вычислений и квадрат среднего значения. - В основной части программы объявляются две переменные:
xиn. - Пользователю предлагается ввести значения этих переменных.
- Затем вызывается функция
powIndyс переданными значениямиxиnи результат выводится на экран.