matematykaszkolna.pl
rekurencja Booxon: Potrzebna pomoc z algorytmem :C 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. 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), potrzebne kolejne 5 wywołań
14 gru 16:05
xyz: F(2,10) czy n = 1 ? − Nie, czy n mod 3 = 0 ? − Nie zatem wynik to 2 * F(2,9) <koniec pierwszego wywolania> <rozpoczynam drugie wywolanie> F(2,9) czy n=1? − Nie (bo n=9) czy n mod 3 = 0? − Tak zatem k = F(2, 3) −−>rozpoczecie kolejnego wywolania zapamietujemy: wynik to k*k*k dla wywolania F(2,3) czy n =1 ? − Nie czy n mod 3 = 0? − Tak zatem k = F(2,1) −> rozpoczecie kolejnego wywolania zapamietujemy wynik k*k*k dla wywolania F(2,1): czy n = 1? − Tak zatem podajemy x jako wynik czyli 2. Wracamy do wywolania F(2,3) wynikiem jest k*k*k (u nas k=2) zatem 2*2*2 = 8 Wracamy do wywolania F(2,9) wynikiem jest k*k*k u nas k = 8, wiec 8*8*8 = 512 Wracamy do wywolania F(2,10) wynikiem bylo 2 * F(2,9) zatem 2 * 512 = 1024 to tyle Czy cos pominalem?
14 gru 16:39
Booxon: Raczej jest dobrze, bo sam przeanalizowałem kilka razy i wyszły te same wyniki czyli: 2, 8, 512, 1024. Dziękuję za pomoc
14 gru 16:52