дихотомии, то есть


дихотомии, то есть деления пополам, нам еще не однажды придется встретиться в других алгоритмах.) С точки зрения двоичной арифметики, идея особенно плодотворна, поскольку возведение в степень 2 легко реализуется сдвигом аргумента на один бит влево, а деление на 2 - сдвигом вправо. Теперь несложно написать соответствующую процедуру. function Power (a, m : byte) : longint; var _a : longint; {текущее значение основания степени} _m : byte; {текущее значение показателя степени} p : longint; {текущее значение накопленного произведения} begin if m = 0 then begin Power := 1; Exit end; p := 1; _a := a; _m := m; while _m > 0 do begin if _m and 1 = 1 then p := p * _a; _a := _a * _a; _m := _m shr 1; end; Power := p end; Этот вариант функции вычисляет значение степени только для неотрицательных значениях аргументов. Более широкий диапазон входных значений позволит обрабатывать функция, написать которую предлагает Упражнение #1. Напишите
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz