Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Рекурсивная функция - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ полином тейлора http://www.cyberforum.ru/cpp-beginners/thread224630.html
Люди,помогите написать рекурсию для такого задания(на вложенной фотке номер 14)... плизззззз.......
C++ Найти наибольший элемент матрицы Найти наибольший элемент матрицы и записать единицу в тот рядок и столбец на перекрёстке которых он содержится.Размерность матрицы вводить с клавиатуры,а элементы разместить в памяти динамически. ... http://www.cyberforum.ru/cpp-beginners/thread224619.html
Прохождение лабиринта C++
Привет всем , вот такая задача ... Найдите маршрут в квадрате, который начинался бы и заканчивался в ячейке 1. При этом посетить все ячейки по одному разу, не попадая в черные. 1 0 0 0 0 0 0 0...
C++ Примитивный шаблонный класс С++
Создайте пожалуйста любой шаблонный класс на начальном (или "примитивном") уровне языка. Для понимания сделайте с розьяснением пожалуйста. Буду очен благодарен. Добавлено через 2 минуты Если...
C++ Харт Системное программирование в среде Windows http://www.cyberforum.ru/cpp-beginners/thread224594.html
Здравствуйте! Есть люди,которые читали книгу Харт Системное программирование в среде Windows? Меня интересуют упражнения, который в конце глав. Есть ли они где-то, или возможно кто-то их делал?
C++ Встроенные функции в компилятор Здравствуйте уважаемые форумчане! В процессе изучения С++ столкнулся с такой проблемой!Занимаюсь на платформе C++ 6.0 и хотел бы знать есть ли встроенные функции для перевода вот таких вещей! int... подробнее

Показать сообщение отдельно
dikanev
21 / 21 / 1
Регистрация: 28.05.2010
Сообщений: 67
06.01.2011, 14:45
Стек можно использовать явно, тогда никаких ограничений не будет. Рекурсия подразумевает, что решение задачи требует решения подобных подзадач, отличающихся набором параметров. Что надо делать в каждой подзадаче определяется набором параметров. Так вот вместо рекурсивных вызовов надо помещать параметры текущей подзадачи в стек и заниматься решением верхней в стеке подзадачи пока стек не опустеет.

Наверное, проще будет понять на примере. Вместо
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure RecProc(параметры1);
begin
  DoSomething(параметры1);
  if <условие> then
  begin
    параметры2 := f(параметры1);
    RecProc(параметры2);
    параметры3 := g(параметры1);
    RecProc(параметры3);
  end;
end;
следует писать
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure NonRecProc(параметры1);
begin
  PushStack(параметры1); //Помещаем параметры1 в стек
  while <стэк не пуст> do
  begin
    пареметры := PopStack; //достаем параметры из стека
    DoSomething(параметры);
    if <условие> then
    begin
      параметры3 := f(параметры);
      PushStack(параметры3);
      параметры2 := f(параметры);
      PushStack(параметры2);
    end;
  end;
end;
Upd. Не посмотрел, что это сишный форум. Но думаю идея понятна и на Паскале.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru