Witam, jak zrobić potęgowanie dwóch liczb w pętli bez użycia "pow" ?
Proszę o pomoc
$wynik=1;
for($i=1;$i<=$wykladnik;$i++)$wynik*=$podstawa;
Tak to ma wyglądać ? Ale dlaczego wypisuje mi taką liczbę "392781" zamiast "81" ?
<?php
$podstawa=3;
$wykladnik=4;
$wynik=1;
$i;
for($i=1;$i<=$wykladnik;$i++)
{
echo $wynik*=$podstawa;
}
?>
Bo taki napisałeś program. Zobacz co masz w pętli wykonywane za każdym razem. Najlepiej przeczytaj sobie tyle razy, aż załapiesz.
wypisuje Ci kolejne potęgi tyle że nie oddzielone czyli 3,9,27,81. Przenieś echo poza pętle.
Markness napisał(a):
wypisuje Ci kolejne potęgi tyle że nie oddzielone czyli 3,9,27,81. Przenieś echo poza pętle.
Ok, dzięki mam
troche z żartem, ale wszystkie warunki zadania są spełnione
// x^y
for ($i = 0; $i < 1; $i++)
{
$wynik = exp($y*log($x));
}
jeśli potęga ma być całkowita dodatnia możesz podnosić do potęgi ze złożonością log(potega). Pokaze Ci na przykladzie:
2^12
2^1 = 2 // 0
2^2 = (2^1)^2 // 0
2^4 = (2^2)^2 // 1
2^8 = (2^4)^2 // 1
2^12 = 2^4 * 2^8
zauważ jeszcze że 12 zapisane binarnie to: 1100, czyli generalnie twój algo sprowadza się mniej więcej do czegoś takiego:
$wynik = 1; // wynik x^y
$x = 2;
$y = 12;
while ($y != 0)
{
if ($y % 2 == 0)
$wynik *= $x;
$x *= $x;
$y /= 2;
}