with Factorial (n,fact) as ( select 0 as n, 1 as fact from dual union all select n +1, (n+1)*fact from Factorial where n < 20 ) select * from Factorial ;A tutaj przykład wyliczenia liczby ruchów z postaci jawnej dla problemu wieży Hanoi:
with hanoi (n,counts) as ( select 1 as n, 1 as counts from dual union all select n +1, POWER(2,n+1) -1 from hanoi where n < 20 ) select * from hanoi ;Wśród standardowych przykładów rekurencji zawsze musi wystąpić ciąg Fibonacciego. Zapytanie wyświetlające liczbę oraz wartość fibonacciego dla tej liczb, wygląda następująco:
with fibonacci (n,fib, fibadd) as ( select 0 as n, 0 as fib, 1 as fibadd from dual union all select n +1, fibadd, (fib + fibadd) from fibonacci where n < 100 ) select n,fib from fibonacci ;
Jak pewnie zauważyłeś, to nie tworzysz modelu rekurencyjnego z warunkami stopu, ale model iteracyjny z warunkami początkowymi.
Brak komentarzy:
Prześlij komentarz