9 Июнь 2008

Вопрос 3 Написать рекурсивную функцию вычисления факториала.

pRogram Zdn_3;
var Fct:byte;

Function Factor(F:byte):longint;
Begin
If f=0 Then Factor:=1
Else Factor:=Factor(F-1)*F
End;

BEGIN
Write(’F! (0<=F<=255) / F= ‘);
Readln(Fct);
Writeln(’Factorial ‘,Fct,’! = ‘,Factor(Fct));
Readln;
END.

Вопрос 4. Понятие рекурсии. Простейшие рекурсивные задачи.

написано в рубрике: Алгоритмизация (Т) — Метки: , , — Михаил @ 19:12

Рекурсия – это такой способ организации вычислительного процесса, при котором подпрограмма в ходе выполнения составляющих ее операторов обращается сама к себе.

Пример вычисления факториала. Подпрограмма получает от компанента edInput целое число N и выводит в компонент mmOutput значение N!, которое вычисляется с помощь рекурсивной функции Faktorial.

Procedure TfmExample.bbRunClick (Sender: TObject);

Function Factorial (N: Word): Extended;

Begin

If N = 0 then

Result :=1

Else

Result:= N * Factorial (N-1)

End;

Var

N: Integer;

Begin

Try

N:= StrToInt (Trim(edInput.Text));

Except

Exit;

End;

mmOutput.Lines.Add(edInput.Text+

‘!=’+FLoatToStr(Factorial(N)));

edInput.Text:=’ ‘;

edInput.SetFocus

end;

Рекурсивный вызов может быть косвенным. В этом случае подпрограмма оброщается к себе опосредственно, путем вызова другой подпрограммы, в которой содержится обращение к первой, например:

Procedure A (i: Byte);

Begin

B (i);

End;

Procedure B (j : Byte);

Begin

A (j);

End;

© Проект «Студенты-Программеры»., 2008. Все права защищены.
Перепечатка материалов только при наличии активной ссылки на источник.
Powered by WordPress