Рекурсия: напечатать в обратном порядке заданный текст - PascalABC.NET

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

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

Напечатать в обратном порядке заданный текст (использовать рекурсивную функцию). помогите, пожалуйста, написать программу. чот я вообще с этой рек. функцией не врубаюсь

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

textual
Листинг программы
function Rev(s: string; i: integer): string := i > 1 ? s[i] + Rev(s, i - 1) : s[i].ToString;
 
begin
  var s := ReadlnString;
  writeln(Rev(s, s.Length));
end.

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

В данном коде реализована функция с именем Rev, которая принимает два аргумента типа string и integer. По сути, эта функция занимается рекурсивным выводом переданного ей текста в обратном порядке. Если говорить более подробно, то в функции Rev происходит следующее:

  1. Если значение i больше 1, то из строки s берется i-й символ (индекс в списке символов строки начинается с 1), к которому добавляется результат вызова функции Rev, переданной в качестве аргумента s и i - 1.
  2. Если значение i равно 1, то возвращается сам символ из строки s (предварительно приводится к строковому типу с помощью метода ToString). В основной части программы происходит следующее:
  3. В переменную s записывается текст, который был введен пользователем (предполагается, что введенный текст является строкой).
  4. На экран выводится результат вызова функции Rev, переданной в качестве аргумента s и s.Length (длина строки). Стоит отметить, что в данном коде есть одна ошибка: при вызове функции ReadlnString не указывается, что она должна возвращать строку (string). В результате, в функцию Rev передается значение типа unit, что является недопустимым. Исправить это можно, указав в объявлении функции ReadlnString, что она возвращает значение типа string.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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