PDA

Просмотр полной версии : Рекурсивные функции в Паскале



Мария
20.06.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
21.06.2004, 08:17
НЕ СОЗДАВАЙТЕ НОВУЮ ТЕМУ!
ДА ЕЩЕ И НЕ В ТОМ ФОРУМЕ!

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

Мария
22.06.2004, 18:08
Извините, что создала Вам неудобства.

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