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: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D |
Swój algorytm oparłem o logiczne przemyślenie kroków, bez optymalizacji w stylu "przechodzimy na binarkę", czyli cały czas trzymając się systemu dziesiętnego (IMG:style_emoticons/default/smile.gif) Po przeskoku zyskamy, ale nadal dla odpowiednio niskich potęg różnica będzie albo niezauważalna, albo bardzo mała by konieczne było wprowadzenie szybkiego potęgowania. Jeśli zaś już mielibyśmy to optymalizować to, przynajmniej w C, zmiana z i++ na ++i też przyniesie wzrost szybkości. A że kod mi wygląda podobnie do C to użycie czegoś w stylu register dla i ( o ile język ten to umożliwia) jeszcze bardziej by zwiększyło wydajność.
Ogólnie jednak rzecz ujmując na pomysł z ifem na bitowej reprezentacji potęgi nie wpadłem, a faktycznie przyspiesza całość bo rozwiązuje problem "potem sprawdzając czy mnożenie potęgi aktualnej * 2 jest większe od wymaganej" w sposób nie wymagający dużej ilości sprawdzeń. Raptem jedno by sprawdzić czy binarna wersja ma ustawione 1 dla tejże pozycji (IMG:style_emoticons/default/smile.gif) Pomysł prosty i wydajny jednocześnie. Człowiek uczy się jednak całe życie. Dzięki flashdev za wskazówkę bo na bank się kiedyś mi przyda, zważywszy, że co jakiś czas bawię się binarnie z liczbami. |
|
|
|
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
flashdev Cytat(thek @ 18.08.2010, 09:26:07 )
... 18.08.2010, 10:23:52
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 |