Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 380 Pomógł: 59 Dołączył: 24.04.2010 Skąd: London Ostrzeżenie: (0%)
|
Witajcie mój problem brzmi następująco mam do napisania klase która w sposób rekurencyjny ma realizować potęgowanie i taką napisałem,
kolejną rzeczą jest to że obiekt tej klasy ma buforować wyniki i wykorzystać bufor zamiast wykonywania metody co przez to rozumiecie? Ten post edytował lord2105 17.08.2010, 17:07:35 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%)
|
Specjalnie nie podałem gotowego algorytmu, żeby zmusić czytelnika do myślenia. Ale widzę, że nie znając jeszcze tego prostego algorytmu już udało Ci się wykonać jego analizę wydajnościową (IMG:style_emoticons/default/smile.gif) Poniżej przedstawiam mój (no bez przesady, jaki tam mój... ja nie wymyślam na poczekaniu takich mądrych rzeczy) algorytm. Kod // zadanie: a ^ b // Przeliczamy b na system binarny. A tak naprawdę to nie przeliczamy, bo ona już jest zapisana binarnie. Użyjemy funkcji: bin(numer_bitu, liczba_int); Liczymy długość pętli: N = ceil(log2(b)); res = 1; mul = a; for( i = 0; i < N; i++ ){ res *= bit(i, b) ? mul : 1; mul *= mul; } To cały algorytm - jedna pętla. Nie jest to co prawda rekursja, ale jak wiadomo rekursję można zrealizować iteracyjnie i vice versa. Tak przy okazji to dokładnie w ten sam sposób działa algorytm szybkiego mnożenia, tylko że tam zamiast *=, będzie +=, oraz niezmiennik mnożenia (1), będzie zastąpiony niezmiennikiem dodawania (0). Ten post edytował flashdev 18.08.2010, 10:25:11 |
|
|
|
lord2105 Potęgowanie rekurencyjne 17.08.2010, 17:04:50
flashdev To, że jeśli podnosisz np. N ^ 10, to można to roz... 17.08.2010, 17:28:13
everth Przekazuj w parametrze funkcji tablicę zawierająca... 17.08.2010, 17:32:06
lord2105 Po części chwyciłem o co Wam chodzi lecz bufor pow... 17.08.2010, 17:41:32
flashdev Cytat(lord2105 @ 17.08.2010, 18:41:32... 17.08.2010, 17:50:58
everth @lord105 - nie wywołuj rekurencyjnie w metodzie tw... 17.08.2010, 18:17:15
thek Flashdev: Twoja metoda jest dobra dla dużych potęg... 18.08.2010, 08:26:07
thek Swój algorytm oparłem o logiczne przemyślenie krok... 18.08.2010, 11:49:53
flashdev No skoro ta różnica będzie niezauważalna, albo naw... 18.08.2010, 12:09:10
lord2105 Dziękuję bardzo za wyczerpujące odpowiedzi ale czy... 18.08.2010, 14:40:43
flashdev Ponieważ nie wytłumaczyłem (uznałem to za oczywist... 18.08.2010, 16:16:51 ![]() ![]() |
|
Aktualny czas: 3.04.2026 - 21:53 |