Вывод строки в обратном порядке через рекурсивную процедуру - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Скопипастил сию процедурку, но вот как именно она работает так и не разобрался. Буду благодарен если кто объяснит простым языком
Procedure Revers(S : String);
Begin
  If Length(S)>0 then
  Begin
    Write(S[Length(S)]);
    Revers(Copy(S,1,Length(S)-1));
  end;
end;

Решение задачи: «Вывод строки в обратном порядке через рекурсивную процедуру»

textual
Листинг программы
{$MODE ObjFPC}
procedure RS(s:string;n:integer=1);
begin
  if n<length(s) then RS(s,n+1);
  write(s[n]);
end;
begin
  RS('нофелет');
end.

Объяснение кода листинга программы

В данном коде написана рекурсивная процедура RS, которая выводит строку в обратном порядке. В процедуре присутствуют два параметра: s (строка) и n (целое число). Если значение n меньше длины строки s, то процедура вызывает саму себя, передавая в качестве параметров строку s и увеличенное на единицу значение n. Если же значение n равно или больше длины строки s, то процедура выводит на экран символ с индексом n из строки s, используя функцию write, и завершает свою работу. В основной части кода вызывается процедура RS, передавая в качестве первого аргумента строку 'нофелет'. Таким образом, при выполнении данного кода на экран будет выведена строка 'ефотон'

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы