IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 10 - Výpočet libovolné mocniny

V minulé lekci, Největší společný dělitel (Euklidův algoritmus), jsme si ukázali Euklidův algoritmus, který najde největšího společného dělitele dvou čísel.

Algoritmus výpočtu n-té mocniny je velmi jednoduchý, avšak je zapotřebí si uvědomit, že exponent mocniny může být i záporný nebo nulový. Základ mocniny budeme považovat za argument a a exponent za argument b.

Mocnina

Výpočet mocniny s kladným exponentem

Začneme s výpočtem mocniny s kladným exponentem. Budeme vycházet z podstaty mocniny, tedy z toho, že 23 = 2 * 2 * 2. Jinými slovy, je třeba argument a vynásobit b - 1 krát argumentem a:

  • a = 2
  • b = 3
  • b - 1 = 2
  • hodnotu a je třeba vynásobit 2x hodnotou a (a * a * a)

Nyní není nic jednoduššího než použít cyklus for běžící od b do 2 (ne do jedna, protože potřebujeme o jedno násobení méně). Kód funkce mocnenikladnym(a,b) se nachází níže.

Výpočet libovolné mocniny

Zde je třeba rozložit funkci na 3 podmínky:

  1. b > 0 - vypočítáme klasickou mocninu s kladným exponentem (např. 23)
  2. b < 0 - výsledek je převrácená hodnota takové mocniny, kde je argument b kladný (např. 2−3 = 1 / 23). K získání kladného exponentu použijeme jeho absolutní hodnotu.
  3. b = 0 - výsledek je vždy 1 (např. 20 = 1)

Funkce na výpočet libovolné mocniny: mocneni(a,b).

Aplikace - zdrojový kód

Funkce mocneni() vrátí argument a umocněný na argument b. Funkce zavolaná tímto způsobem: mocneni(2,3) vrátí 23, což je 8.

  • /**
     * Vrati 'a' umocnene na 'b'. Pokud je 'b' kladne.
     */
    static int mocnenikladnym(int a, int b) {
        int c = a;
        for (; b > 1; b--) {
            c = c * a;
        }
        return c;
    }
    
    /**
     * Vrati 'a' umocnene na 'b'.
     */
    static int mocneni(int a, int b) {
        if (b > 0) {
            return mocnenikladnym(a, b);
        }
    
        if (b < 0) {
            return (1 / mocnenikladnym(a, Math.abs(b)));
        }
    
        return 1;
    }

V další lekci, Výpočet řešení kvadratické rovnice, si ukážeme algoritmus pro výpočet řešení kvadratické rovnice včetně zdrojového kódu a vývojového diagramu.


 

Předchozí článek
Největší společný dělitel (Euklidův algoritmus)
Všechny články v sekci
Matematické algoritmy
Přeskočit článek
(nedoporučujeme)
Výpočet řešení kvadratické rovnice
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
36 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity