Autor Zpráva
asdAA
Profil *
Mam scriot, ktory ide aj pomocou while aj pomocou rekurziou

function Rekurzia($paramater)
{
.
.
.
tu sa nieco deje az pride podmienka, ktora ked vyhovuje vypise hodnotu, inak sa zmensuje parameter

if ($pocet >= $premmena)
echo $vysledok;
else
Rekurzia($paramater - 1)
}


alebo:



$super = 0;
$parameter = 10;

while ($super == 0)
{
proces
.
.
.

if ($pocet >= $premmena)
{
echo $vysledok;
$super = 1;

}
else
$parameter = $paramater - 1)
}



Script spravi to iste ale co je rychlejsie? Kde je lepsia casova zlozitost?
tiso
Profil
No ako tak pozerám na ten tvoj while, tak si vôbec nepochopil princíp cyklov riadených podmienkou, k rekurzii sa radšej ani nevyjadrujem... Máš a čo učiť chalan...
asdAA
Profil *
Povies mi co tam je zle?
nightfish
Profil
rekurze mívá obecně větší paměťovou náročnost, režii kvůli volání (ale to většinou nebývá takový problém), a omezenou hloubku zanoření (danou velikostí zásobníku)

ve tvém případě bych použil cyklus for, protože to vypadá, že znáš dopředu počet opakování...

for ($i = 0; $i < $parameter; $i++) {
...
}

zajímavá literatura ke studiu by pro tebe mohla být:
http://www.linuxsoft.cz/article.php?id_article=199
http://www.linuxsoft.cz/article.php?id_article=204
asdAA
Profil *
Dakujem ty si moj clovek!

Ale for cyklus nie je dobre, pretoze v mojom pripade neviem kedy cyklus skonci, on moze skoncit uz pri $i = i ale aj pri $i = 10, to rozhodne podmienka, takze zrejme je idealne while.

Mam pravdu?
bzuK
Profil
Z toho skriptu není jasné, k čemu ti slouží $parameter, $pocet a $premmena to samé

Ale tuto konstrukci:


$super = 0;
while ($super == 0)
{
... proces ...
if ($pocet >= $premmena)
{
echo $vysledek;
$super = 1;
}
}

V klidu zaměň za

while ($pocet < $premmena) {
... proces ...
}
echo $vysledek;


Víc o všelijakých cyklech se můžeš dočíst v manuálu PHP, kap. Řídící struktury
Kajman_
Profil *
takze zrejme je idealne while

klidně můžete mít for a vyskočit kdykoliv pomocí break

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0