Object Pascal/Procedury i funkcje: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
→Przykład deklaracji: w deklaracji brakowało typu zwracanego wyniku |
→Rekurencja: rozbudowa, przykład |
||
Linia 172:
===Rekurencja===
Rekurencja jest to zdolność procedury lub funkcji do wywoływania samej siebie. Przykład:
<source lang="Pascal">
function Potega(a:real; n:integer): real;
begin
if (n=0) and (a<>0) Potega := 1;
if (n=1) Potega := a;
if (n>1) Potega := a * Potega(a, n-1);
if (n<0) Potega := 1 / Potega(a, -n);
end;
</source>
Skorzystaliśmy tutaj z definicji rekurencyjnej potęgi:
<math>
{a^n} = \begin{cases}
1 \ \operatorname{dla} \ n = 0 \cap a \neq 0 \\
a \ \operatorname{dla} \ n = 1 \\
a \cdot a^{n-1} \ \operatorname{dla} \ n > 1 \\
\frac{1}{a^{-n}} \ \operatorname{dla} \ n < 0
\end{cases}
</math>
Oczywiście do obliczania potęg o większym od zera wykładniku prostsza jest definicja iteracyjna:
<math>
a^n = \underbrace{a \cdot a \cdot \dots \cdot a}_n
</math>
Rekurencja pochłania więcej pamięci RAM, a często i procesora, więc działa wolniej od pętli. Dlatego należy ją stosować tylko wtedy, gdy jej użycie ma sens, np. przy operacjach na katalogach i ich podkatalogach.
{{Nawigacja|Object Pascal|
|