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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2017, 18:13   #1
Romeshek
Пользователь
 
Регистрация: 29.09.2017
Сообщений: 33
По умолчанию Рекурсия

Код:
 Var 
  s2,Str1,s1: string;
   i,s3: integer;
    
   
Function Str(s2: string; s3: integer): string;
 Var i: integer;
  Begin
    if s3 = 1 then
     Str := s2[s3]
      else
       Str := s2[s3 - 1];
      End;
     
Begin
 Write ('Введите имя и фалимилую, разделяя пробелом: ');
  Readln (s1);
    begin
     for i := length(s1) downto 1 do
      s2 := s2 + s1[i];
       writeln;
      writeln(s2);
     end;
    
   Writeln;
    For i := Length(s2) downto 1 do
     s3 := i;

  Str1 := Str(s2,s3);
  Write('Ответ: ', Str1);

End.
Вопрос : почему выводит только одну букву, вместо исходного слова?
Romeshek вне форума Ответить с цитированием
Старый 13.12.2017, 18:26   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Где вы тут рекурсию увидели?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.12.2017, 18:30   #3
Romeshek
Пользователь
 
Регистрация: 29.09.2017
Сообщений: 33
По умолчанию

Код:
Function Str(s2: string; s3: integer): string;
 Var i: integer;
  Begin
    if s3 = 1 then
     Str := s2[s3]
      else
       Str := s2[s3 - 1];
      End;
Разве, это не она?
Romeshek вне форума Ответить с цитированием
Старый 13.12.2017, 18:33   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Рекурсия это вызов функции внутри этой самой функции.
Тут вообще нет вызовов каких-либо функций.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.12.2017, 18:37   #5
Romeshek
Пользователь
 
Регистрация: 29.09.2017
Сообщений: 33
По умолчанию

Хм, странно. На лекции нам давали похожий пример с факториалом. Там было практически так же, как я написал в этой программе.
Хорошо, предположим, здесь нет рекурсии. Как мне исправить ошибку связанную с выводом одной буквы?
Romeshek вне форума Ответить с цитированием
Старый 13.12.2017, 18:39   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну видимо все-таки не "так же" )
http://www.delphisources.ru/pages/fa...factorial.html
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.12.2017, 18:42   #7
Romeshek
Пользователь
 
Регистрация: 29.09.2017
Сообщений: 33
По умолчанию

Нам давали другой пример! И в нем было ТАК ЖЕ, как я написал в этой программе. Что насчет ошибки?)
Romeshek вне форума Ответить с цитированием
Старый 13.12.2017, 18:45   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык посмотрите этот пример. Там примеры итеративной и рекурсивной реализации.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 13.12.2017, 18:48   #9
Romeshek
Пользователь
 
Регистрация: 29.09.2017
Сообщений: 33
По умолчанию

Вот, смотрите
Это - моя функция
Код:
Function Str(s2: string; s3: integer): string;
А вот тут(причем в ней же самой) я к ней обращаюсь
Код:
   Str := s2[s3 - 1];
Тем самым вызываю функцию внутри этой самой функции.
Romeshek вне форума Ответить с цитированием
Старый 13.12.2017, 18:56   #10
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
str:=.....  //это присвоение результату какого-то значения (но не вызов)

... :=str(sx,5);// а вот так вызывают
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия AZelensky Общие вопросы Delphi 3 19.04.2014 10:22
Рекурсия (С) rublyabachka Помощь студентам 1 15.12.2011 02:11
рекурсия Lena neznayka Помощь студентам 2 16.06.2010 20:46
Рекурсия Solnze2 Паскаль, Turbo Pascal, PascalABC.NET 0 09.06.2010 09:28