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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2012, 00:20   #11
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Если a и k сделать глобальной, то немного сэкономим место в стеке.
Arigato вне форума Ответить с цитированием
Старый 22.05.2012, 00:28   #12
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Arigato, вы правы
Тогда уж можно и sum сделать глобальной, и оставить на стеке только адреса возврата (вроде бы)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 22.05.2012, 00:43   #13
GoldSieg
Пользователь
 
Регистрация: 02.10.2011
Сообщений: 45
По умолчанию

красиво.
Спасибо!
GoldSieg вне форума Ответить с цитированием
Старый 22.05.2012, 01:07   #14
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Arigato, вы правы
Тогда уж можно и sum сделать глобальной, и оставить на стеке только адреса возврата (вроде бы)
Ну да, если в виде процедуры сделать.
Arigato вне форума Ответить с цитированием
Старый 22.05.2012, 02:13   #15
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
оно не устраивает моего преподавателя...
возможно преподаватель подразумевал оптимизировать количество вызовов ... для вашего примера:
Код:
if k = 1 then Sum := x[1] else Sum := x[k] + Sum(k - 1, x)
для кода от BDA :
Код:
function Sum(k: integer): longint;
var
  a: integer;
begin
  a := Random(20);
  write(a, ' ');
  if k = 1 then  sum := a
    else Sum := a + Sum(k - 1);  
end;
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 22.05.2012, 08:02   #16
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от GoldSieg Посмотреть сообщение
а как можно сделать так чтоб функция не держала в памяти весь массив.?
Передать массив по ссылке, тогда будет передаваться его адрес.
Кстати, действительно существенная оптимиз0ация, т.к. в первой реализации из-за передачи массива фактическая сложность O(n^2) вместо O(n).
s-andriano вне форума Ответить с цитированием
Старый 22.05.2012, 08:04   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не пойму, зачем тут процедуры?
Это что капризы препода?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.05.2012, 13:33   #18
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Еще более непонятно, зачем здесь рекурсия.
Но специфика учебных задач в том, что она должна быть сделана вполне определенным методом.
s-andriano вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оптимизация программы Arsenx777 Работа с сетью в Delphi 1 28.08.2011 14:00
Оптимизация программы 0479 Помощь студентам 7 09.03.2011 17:15
Оптимизация программы Lenya Помощь студентам 2 05.01.2011 18:56
Оптимизация программы!!! $T@LKER Общие вопросы Delphi 10 08.08.2010 21:23