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

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Рекурсивные функции в Паскале

Naeel Maqsudov » 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), которая скрывает технологические аргументы функций, оставляя только те, смысл которых понятен.

Мария » 22 июн 2004, 18:08

Извините, что создала Вам неудобства.

Naeel Maqsudov » 21 июн 2004, 08:17

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

(Тема перенесена из Delphi/Pascal)

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

Мария » 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

Вернуться к началу