Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2013, 12:23   #1
ujif
Пользователь
 
Регистрация: 24.02.2013
Сообщений: 28
По умолчанию рекурсия умножение и возведение в степень

function p(a,n:integer):integer;
var res:integer;
begin
if n=0 then res:=1
else
res:=sqr(p(a,n-1))*a;
p:=res;
end;
не могу понять почему
при a=2 и n=3 результат = 128
какое действие выполняется первым
sqr или *
ujif вне форума Ответить с цитированием
Старый 25.05.2013, 13:22   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А Вы распишите пошагово, как происходит возведение:
p(a, 3) = sqr(p(a, 2)) * a
p(a, 2) = sqr(p(a, 1)) * a
p(a, 1) = sqr(p(a, 0)) * a
p(a, 0) = 1

Подставляем в обратном порядке:
p(a, 1) = 1 * 1 * a = a
p(a, 2) = a * a * a = a^3
p(a, 3) = a^3 * a^3 * a = a^7

Прежде, чем пытаться реализовать быстрый алгоритм возведения в степень, реализуйте обычный "медленный".
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возведение в степень XYLIGANXYL Общие вопросы по Java, Java SE, Kotlin 7 17.09.2016 15:20
Возведение в степень Dima-War Общие вопросы C/C++ 7 18.03.2012 09:37
Возведение в 6 степень, используя только умножение не более 3-х раз webber9989 C# (си шарп) 2 09.10.2011 01:44
возведение в степень ILNARM Паскаль, Turbo Pascal, PascalABC.NET 16 16.10.2009 23:04