Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Potęgowanie rekurencyjne
lord2105
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.04.2026 - 21:53