Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Oman potenssifunktion toteutus

Sivun loppuun

Painbox [21.02.2012 12:22:33]

#

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.

Lebe80 [21.02.2012 12:25:38]

#

Mites se potenssilasku sitten menikään? Entisen fysiikan opettajani opein yleispätevä laskukaava: Jos ei jakamalla onnistu niin pitikös silloin kokeilla kertolaskua?

Grez [21.02.2012 12:27:06]

#

//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

Triton [21.02.2012 12:32:10]

#

[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...

makumaku [21.02.2012 13:35:55]

#

Jonkin verran vaikuttaa myös lukualueet, mikä on kantaluvulle ja eksponentille määritelty lukualue (nollasta erovana kokonaisluku, negatiivinen, rationaalinen, jne...)

Grez [21.02.2012 13:48:11]

#

Salliiko tehtävänanto sqrt() -funktion käytön? Saisi myös ei-kokonaisluku-eksponentit toimimaan..

Metabolix [21.02.2012 14:12:08]

#

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.

Painbox [21.02.2012 14:18:37]

#

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. :)


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta