Potęgowanie C++

Potęgowanie – implementacja w C++, Javie i Pythonie

Algorytmy stanowią podstawową część wiedzy wymaganej do matury z informatyki. Na łamach blogu udostępniłem cały szereg algorytmów, które na niej ci się przydadzą. Choć do części z nich dałoby radę dojść samemu, to i tak warto znać schemat ich działania, aby się nie pomylić. Jednym z algorytmów, które każdy powinien być w stanie napisać sam, jest potęgowanie.

Pojęcie potęgowania powinno być znane każdemu z Was. Potęgę możemy zapisać jako an. Jest to, w uproszczeniu, n-krotne mnożenie liczby a*a. W uproszczeniu, ponieważ dotyczy to n całkowitego dodatniego. Dla n ujemnego potęgę możemy zapisać jako:

 

Jeżeli n będzie ułamkiem w postaci , to wtedy potęgę inaczej możemy zapisać jako:

Przy powyższych wzorach należy pamiętać, że jakakolwiek liczba podniesiona do potęgi 0 daje 1. Jeżeli ktoś poważnie myśli o dobrym wyniku z matury, to nie powinien mieć problemu ze stworzeniem rekurencyjnego algorytmu potęgowania. Niemniej jednak poniżej omówimy sobie, dla przypomnienia, jego schemat i implementacje.

Potęgowanie – algorytm

Na początku pobieramy dwie liczby: podstawę potęgi a i jej wykładnik n. Potęgowanie możemy wykonać na dwa sposoby: iteracyjny i rekurencyjny. W pierwszym sposobie tworzymy zmienną pomocnicza p=1.Potem wykonujemy n iteracji, gdzie w każdej z nich mnożymy p*a. My jednak posłużymy się sposobem rekurencyjnym, gdyż jest bardziej przejrzysty i równie wydajny co iteracyjny. Jeżeli nie wiesz czym jest rekurencja, zajrzyj do tego wpisu. W sposobie rekurencyjnym wykorzystamy zależność, że a^n = (a^(n-1)) * a. Ogółem wzór rekurencyjny możemy zapisać tak:

potęgowanie - wzór

Nasz algorytm będzie wywoływać sam siebie, dzięki czemu otrzyma on wartości poszczególnych potęg o coraz to mniejszych wykładnikach. Będzie on wywoływać się, dopóki nie natrafi na warunek STOP – wykładnik równy 0. Wtedy to wszystkie wyniki wywołań zostaną wymnożone i zwrócone w głównym wywołaniu. Sposób ten możemy też wykorzystać dla wykładników ujemnych. Wystarczy w głównym wywołaniu funkcji zwrócić wartość 1/((a^(-n-2))* a). Powyższy algorytm przedstawiłem na poniższym schemacie blokowym:

 

 

Potęgowanie – implementacje

Skoro mamy już algorytm to, jak na każdy z algorytmów przystało, pora przejść do jego wdrożenia. Przygotowałem dla Was implementacje w trzech, popularnych językach: C++, Javie oraz Pythonie. Jeżeli przygotowujesz się do matury z informatyki, pewnie wiesz, że możesz na niej wybrać jeden z tych języków. Z tego też powodu opisałem każdy kod źródłowy, abyś mógł go lepiej zrozumieć, ale też i zapamiętać.

Podsumowanie

Choć potęgowanie jest jednym z najbardziej podstawowych algorytmów, to jest jeszcze masa innych, tych bardziej skomplikowanych. Są one równie przydatne, zarówno na maturze, ale też i w codziennym programowaniu. Jeżeli więc chcesz się lepiej/więcej nauczyć, zajrzyj do tego wpisu. Znajdziesz tu również przydatne informacje na temat innych, ważnych zagadnień dotyczących matury z informatyki. Jeżeli chcesz wyrobić w sobie dobre nawyki w programowaniu, to powinieneś również rzucić okiem na ten tytuł:


grupa wsparcia matura z informatyki
You Might Also Like
Dodaj komentarz

icon