Спасибо большое за решение задачи, но мне нужно с типом данных "число": создать "перевертыш" числа (напр., из 1234 получается 4321), если без рекурсии, то:
a:=0;
while n<>0 do
begin
a:=n mod 10 +a*10;
n:=n div 10;
end;
а нужно с рекурсией!
Помогите, пож.
mk1311@yandex.ru
Рекурсивные функции в Паскале
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
НЕ СОЗДАВАЙТЕ НОВУЮ ТЕМУ!
ДА ЕЩЕ И НЕ В ТОМ ФОРУМЕ!
(Тема перенесена из Delphi/Pascal)
ДА ЕЩЕ И НЕ В ТОМ ФОРУМЕ!
(Тема перенесена из Delphi/Pascal)
Извините, что создала Вам неудобства.
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Код: Выделить всё
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), которая скрывает технологические аргументы функций, оставляя только те, смысл которых понятен.