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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2016, 19:35   #1
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию Рекурсивный алгоритм

Пожалуйста, объясните раз и навсегда, чтоб я понял.
В программе описан целочисленный массив с индексами от 0 до 10 и целочисленные переменные k, i. В программе массив сначала заполняется, затем изменяется.
Код:
for i: 0 to 10 do 
A[i]:=i;
for i:= 1 to 4 do begin
k:= A[2*i];
A[2*i]:=A[2*i+1];
A[2*i+1]:=k;
end;
Чему будут равны элементы этого массива после изменения?

1) 5 6 7 8 9 0 1 2 3 4 10
2) 10 9 8 7 6 5 4 3 2 1 0
3) 0 1 2 3 4 5 4 3 2 1 0
4) 1 0 3 2 5 4 7 6 9 8 10

Пожалуйста, как можно примитивнее объясните, чтоб до меня дошло.
Спасибо!
Дюша Метелкин вне форума Ответить с цитированием
Старый 11.04.2016, 19:40   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Здесь нету рекурсии, имхо
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 11.04.2016, 20:02   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

1) Как уже сказал Aleksandr H., тут нет рекурсии;
2) Ни один из представленных ответов не верен;
3) Что тут вам непонятно? Если циклы, то разверните их:
Код:
A[0]:=0;
A[1]:=1;
A[2]:=2;
A[3]:=3;
A[4]:=4;
A[5]:=5;
A[6]:=6;
A[7]:=7;
A[8]:=8;
A[9]:=9;
A[10]:=10;
k:=A[2];
A[2]:=A[3];
A[3]:=k;
k:=A[4];
A[4]:=A[5];
A[5]:=k;
k:=A[6];
A[6]:=A[7];
A[7]:=k;
k:=A[8];
A[8]:=A[9];
A[9]:=k;
И последовательно проделайте эти операции.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2016, 20:17   #4
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
1) Как уже сказал Aleksandr H., тут нет рекурсии;
2) Ни один из представленных ответов не верен;
3) Что тут вам непонятно? Если циклы, то разверните их:
Код:
A[0]:=0;
A[1]:=1;
A[2]:=2;
A[3]:=3;
A[4]:=4;
A[5]:=5;
A[6]:=6;
A[7]:=7;
A[8]:=8;
A[9]:=9;
A[10]:=10;
k:=A[2];
A[2]:=A[3];
A[3]:=k;
k:=A[4];
A[4]:=A[5];
A[5]:=k;
k:=A[6];
A[6]:=A[7];
A[7]:=k;
k:=A[8];
A[8]:=A[9];
A[9]:=k;
И последовательно проделайте эти операции.
Извините, название перепутал
Дюша Метелкин вне форума Ответить с цитированием
Старый 11.04.2016, 20:19   #5
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию

Но все равно не понял...
Дюша Метелкин вне форума Ответить с цитированием
Старый 11.04.2016, 20:31   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Хорошо, с "рекурсивностью" разобрались. Попробуйте как-то конкретнее сформулировать вопрос. Я пока не могу понять даже, что именно вам нужно пояснить
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2016, 20:35   #7
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию

правильный вариант под номером 4, но я не понимаю самого алгоритма, в какой строчке меняется положение числа\цифры.
Дюша Метелкин вне форума Ответить с цитированием
Старый 11.04.2016, 20:47   #8
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код выше даст такой массив:
Код:
0 1 3 2 5 4 7 6 9 8 10
То есть отличается от 4 варианта первыми 2 числами.
Первый цикл "for i:=0 to 10 do" заполнит массив числами. Причем на i-ом месте в массиве будет число i. Второй цикл "for i:= 1 to 4 do" "как-то" изменит массив, а именно будет менять A[2*i] и A[2*i+1] местами, используя переменную k для временного хранения значения.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.04.2016, 21:01   #9
Дюша Метелкин
Пользователь
 
Регистрация: 21.03.2016
Сообщений: 27
По умолчанию

A[2*i] это какой элемент?

A[2*i+1] какой
Я этого и не понимаю....

Последний раз редактировалось BDA; 27.05.2020 в 05:46.
Дюша Метелкин вне форума Ответить с цитированием
Старый 11.04.2016, 21:06   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Поскольку A[2*i] используется внутри цикла "for i:= 1 to 4 do", то на первой итерации цикла это будет A[2], на второй - A[4] и т.д.
Код без циклов из 3 сообщения вам понятен?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рекурсивный алгоритм. Nelson1992 Помощь студентам 9 21.03.2010 12:09
Рекурсивный алгоритм SVM Общие вопросы C/C++ 7 13.11.2009 09:24
Сортировка, поиск, рекурсивный алгоритм Delphi Stases Помощь студентам 4 29.05.2009 01:15
Разработать рекурсивный алгоритм lucky Паскаль, Turbo Pascal, PascalABC.NET 4 08.05.2009 15:04