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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2009, 19:13   #1
darsinella
 
Регистрация: 08.12.2009
Сообщений: 6
По умолчанию Pascal - рекурсия

Задание такое: Возвести число А в натуральную степень n за как можно меньшее количество умножений.
Я написала программу, она рабочая, но препод сказал, что можно произвести возведение в степень за МЕНЬШЕЕ количество умножений и не принял. Подскажите, как переделать, пожалуйста
Код Pascal
Program Laba4;
var a,n,i,m:integer;
procedure St(a,n,m:integer);
begin
if n>=1 then
begin
m:=m*a;
St(a,n-1,m);
end
else writeln('a^n= ',m);
end;
Begin
Write('vvedite osnovanie a= ');readln(a);
Write('vvedite stepen n= ');readln(n);
st(a,n,1);
readln;
end.
darsinella вне форума Ответить с цитированием
Старый 22.12.2009, 19:24   #2
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Код:
{ возвращает X в степени N }
function Pow(X, N: Integer): Integer;
begin
     if N = 0 then
     begin
          Pow := 1;
          Exit;
     end;
     if N mod 2 = 0 then Pow := Pow(X * X, N div 2)
     else Pow := X * Pow(X, N - 1);
end;

var
   X, N: Integer;
begin
     ReadLn(X, N);
     WriteLn(Pow(X, N));
     ReadLn;
     ReadLn;
end.
Alex_FF вне форума Ответить с цитированием
Старый 22.12.2009, 19:27   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

А чем Ln не нравится?
Код:
BR = Exp(N*LN(X));
Есть еще Power из модуля Math;
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 22.12.2009, 20:40   #4
Alex_FF
Удален
Форумчанин
 
Регистрация: 02.12.2009
Сообщений: 309
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
А чем Ln не нравится?
Код:
BR = Exp(N*LN(X));
Есть еще Power из модуля Math;
ну, во-первых, в названии темы написано:
Цитата:
Pascal - рекурсия
а во-вторых, если задают решить такую задачу, то это значит, что нужно решить её самому, а не записать решение из одного слова, воспользовавшись одной готовой функцией из какого-либо модуля...

в-третьих, Ln - Ln'ом, а результат-то вещественный, а какой смысл расширять поле целых чисел до поля действительных, когда результат всё равно лежит в поле целых чисел?

Последний раз редактировалось Alex_FF; 22.12.2009 в 21:55.
Alex_FF вне форума Ответить с цитированием
Старый 22.12.2009, 21:39   #5
darsinella
 
Регистрация: 08.12.2009
Сообщений: 6
По умолчанию

Спасибо всем большое. Выручили
darsinella вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal Рекурсия! Korun Помощь студентам 3 16.12.2009 16:50
Задача на языке Pascal. Рекурсия. (FainT) Помощь студентам 6 23.05.2009 15:45
Рекурсия Pascal HoLToFF Помощь студентам 3 31.03.2009 22:25
Pascal: Рекурсия MaGWaY_minsk Помощь студентам 2 19.02.2009 09:46
Pascal. рекурсия. TOSAgrk Помощь студентам 2 04.02.2009 12:05