matematykaszkolna.pl
. asdf: rekurencja mam napisać algorytm potęgi an rekurencyjnie i opisać to drzewkiem: kod: if(n=0) { return 1; } if (n %2 = 1) { n = (n−1)/2; return a * potega(a,n) * potega(a,n); } if (n%2 = 0) { n = n/2; return potega(a,n) * potega(a,n); } −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− na przykład: a6: 6%2 = 0; n = 6/2 = 3; return potega(a,3) * potega(a,3); teraz n = 3; 3%2 = 1; n = 3−1/2 = 1 return a * potega(a,1) * potega(a,1); teraz n = 1; 1%2 = 1; n = (1−1)/2 = 0; return a * potega(a,0) * potega(a,0) gdy n = 0 znam wartość = 1 i teraz zaczynam to zliczać drzewkiem: http://postimg.org/image/rfjijj21l/ dobrze to rozumiem i czy mógłbym dać przypadek graniczny: if(n=1) return a; ?
19 kwi 00:52
asdf: emotka
19 kwi 21:58
Trivial: Gratulacje! Właśnie napisałeś bardzo niewydajną funkcję podnoszenia do potęgi z ogromnym drzewem. Zamiast liczenia dwa razy tego samego możesz zapamiętać gdzieś wartość pośrednią. Zrób to tak: http://ideone.com/WqPIuL Zadanie dla Ciebie: przepisz to do C. emotka
19 kwi 22:45
asdf: Nie chodziło mi by ten algorytm był wydajny − tylko chciałem ogarnąć rekurencjeemotka
19 kwi 23:32