Elikkä tämmönen tehtävä tuli vastaan missä pitäis väsätä funktio, joka laskee ja palauttaa input parametrina tulevan luvun potenssin (eli esim. joku $luku potenssiin $pot). Jollain silmukalla tää pitäis vissiin toteuttaa. Eikä saa käyttää valmista pow() funktiota..
Ei oikeen löytynyt googlestakaan apuja, kun kukaan ei näin tyhmästi sitä tee.
Auttakee, kiitos.
Mites se potenssilasku sitten menikään? Entisen fysiikan opettajani opein yleispätevä laskukaava: Jos ei jakamalla onnistu niin pitikös silloin kokeilla kertolaskua?
//Lähtöarvot: $kanta = 3; $eksponentti = 9; //Täytyy olla positiivinen kokonaisluku $kantaeksp = 1; $tulos = 1; while ($eksponentti >= $kantaeksp ) { if (($eksponentti & $kantaeksp) > 0) { $tulos *= $kanta; } $kanta *= $kanta; $kantaeksp <<= 1; }
Edit: O(ln(n)) toteutus
[sarcasm]Kuulostaa kyllä todella haastavalta tehtävältä, mitenköhän se opettaja on noin pahan tehtävän antanut.[/sarcasm]
Vinkkinä voin sanoa: for-lause ja *= - operaattori...
Edit. Jaahas Grez kertoileekin valmiita ratkaisuja...
Jonkin verran vaikuttaa myös lukualueet, mikä on kantaluvulle ja eksponentille määritelty lukualue (nollasta erovana kokonaisluku, negatiivinen, rationaalinen, jne...)
Salliiko tehtävänanto sqrt() -funktion käytön? Saisi myös ei-kokonaisluku-eksponentit toimimaan..
Potenssin voi laskea helposti myös logaritmin ja eksponenttifunktion avulla. Silti tuo pienehköille positiivisille kokonaislukueksponenteille riittävä triviaali silmukkaratkaisu olisi minusta syytä itse keksiä. Grez onneksi vaihtoikin jo viestiinsä astetta kryptisemmän ratkaisun, jonka opettaja toivottavasti arvaa heti netistä kopioiduksi.
Grez kirjoitti:
Salliiko tehtävänanto sqrt() -funktion käytön? Saisi myös ei-kokonaisluku-eksponentit toimimaan..
Ei.
Mutta kiitos nyt kuitenkin, tyhmä kun on. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.