Рекурсивные функции в Паскале

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, dr.Jekill, MOTOCoder, Medved

Ответить
Мария
Сообщения: 3
Зарегистрирован: 16 июн 2004, 11:13
Откуда: Краснодар

20 июн 2004, 19:01

Спасибо большое за решение задачи, но мне нужно с типом данных "число": создать "перевертыш" числа (напр., из 1234 получается 4321), если без рекурсии, то:
a:=0;
while n<>0 do
begin
a:=n mod 10 +a*10;
n:=n div 10;
end;
а нужно с рекурсией!
Помогите, пож.
mk1311@yandex.ru
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

21 июн 2004, 08:17

НЕ СОЗДАВАЙТЕ НОВУЮ ТЕМУ!
ДА ЕЩЕ И НЕ В ТОМ ФОРУМЕ!

(Тема перенесена из Delphi/Pascal)
Мария
Сообщения: 3
Зарегистрирован: 16 июн 2004, 11:13
Откуда: Краснодар

22 июн 2004, 18:08

Извините, что создала Вам неудобства.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2551
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

24 июн 2004, 08:14

Код: Выделить всё

function reflect0(n,a:longint):longint;
begin
  if n=0
    then reflect0:=a
    else reflect0:=reflect0(n div 10,a*10 + n mod 10);
end;

function reflect(X:longint):longint;
begin
  reflect:=reflect0(X,0);
end;


begin
  writeln(reflect(12345));
  readln;
end.

Фунция reflect0 требует указания 0 в качестве второго аргумента, по этому, для повышения читебельности программ в таких случаях вводят еще одну функцию (в данном случае reflect), которая скрывает технологические аргументы функций, оставляя только те, смысл которых понятен.
Ответить