Помощь - Поиск - Пользователи - Календарь
Полная версия: походу рекурсия...
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-morpheus-
ЭЭЭ, здравствуйте, не скажете, каким способом на паскале можно заставить процедуру вызвать саму себя?
типо такого:
Procedure blablabla(a,b,c,d:4isla);
begin
a:=123;
...........
BLABLABLA(a,b,c,d);
End;

ЗЫ. походу называецо рекусрсией... blink.gif
St@senk@
Код
function Fact(n: integer): integer;
begin
  if n<=1 then
    Fact:=1
  else
    Fact:=n*fact(n-1);
end;

Вот простейший пример, примерно так как ты написал так и вызывается, даже можно сказать в точности.
Гость
Цитата(St@senk@ @ 25.03.2007 17:25) *

Код
function Fact(n: integer): integer;
begin
  if n<=1 then
    Fact:=1
  else
    Fact:=n*fact(n-1);
end;

Вот простейший пример, примерно так как ты написал так и вызывается, даже можно сказать в точности.

Не, это конечно круто, но факториал-то я и сам писал... но нужно, чтоб именно процедура была, а не функция. когда я пишу чёто типа
Procedure Prutik(x,y,l,f:double);
Var x1,y1:double;
Begin
x1:=x+sin(f)*l;
y1:=y+cos(f)*l;
Line(Round(x),Round(y),Round(x1),Round(y1));
x:=x1;
y:=y1;
Begin
Prutik(x,y,l/2,f+pi/8);
Prutik(x,y,l/2,f-pi/8);
End;
End;

имею рантайм эррор 202... blink.gif blink.gif вот.
volvo
Ну, RunTime ты будешь иметь только потому, что рекурсия у тебя получается бесконечной. Ты ж не определил условия выхода из рекурсии... Как только стек переполнится - Error 202 обеспечена...

А вообще - приведи полностью программу, посмотрим, что у тебя там происходит...

P.S. Переезжаем в "Задачи"
Гость
Точно! Спасибо. А хочу я такое себе деревце нарисовать...
Зы. уже начинает коечто выходить.) Ищё раз спасибо.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.