funkcja rekurencyjna (infa)
Marcinek: Dana jest następująca funkcja rekurencyjna:
Dane:
x — liczba całkowita,
n — dodatnia liczba całkowita.
funkcja F(x, n)
jeżeli n = 1
podaj wynik x i zakończ
w przeciwnym razie
jeżeli n mod 3 = 0
k ← F(x, n div 3)
(*) podaj wynik k*k*k i zakończ
w przeciwnym razie
(**) podaj wynik x*F(x, n−1) i zakończ
Uwaga: „div” jest operatorem dzielenia całkowitego.
3.1.
Podaj wszystkie wywołania rekurencyjne funkcji F oraz obliczany po każdym wywołaniu
wynik, jeśli na początku wywołamy F(2, 10).
wywołanie wynik
F(2, 10)
F( ; )
W komentarzu jest coś takiego " Zastanówmy się, co dostaniemy w wyniku wywołania funkcji F(x,
n). Niech n = 3•a+b, gdzie
a i b są nieujemnymi liczbami całkowitymi oraz b < 3. Wówczas xn = x3•a+b = xa•xa•xa•xb.
Rozważmy teraz funkcję F. Nietrudno spostrzec, że gdy n < 3, to wartością F(x,n) jest xn,
natomiast
dla n = 3•a+b > 2 mamy
F(x,n) = xb•F(x, 3•a) = xb•F(x,a) •F(x,a) • F(x,a) = xb•xa•xa•xa = xn.
Wytłumaczy mi ktoś czemu F(x,n) = xn ( nie rozumiem tego to wynika z jakieś definicji czy coś
?
17 mar 22:55
Marcinek: wywołanie mam i rozumiem ale tych ... wyników nie
17 mar 22:58
Marcinek: up
20 mar 16:39