Autor Zpráva
jijik
Profil *
Ahoj... v knizce sem nadazil na naseldujici funkci ale moc ji nerozumim, mohl by mi prosim nekdo vysvetlit co dela??


function mocnina ($zaklad, $exp) {
if ($exp){
return $zaklad * mocnina($zaklad, $exp - 1);
}
return 1;
}
k
Profil *
vypocita ti mocninu 3^3 = 27 atp.
Dero
Profil
Viz k, doplním, že rekurzivně.
koudi
Profil
Tzv. rekurze ... tomu se v praxi snaž v drtivé většině případů vyhnout ...
jijik
Profil *
aha diky, ale jak to udela? rozumim tomu dobre, ze:


function mocnina ($zaklad, $exp) {------------------------------zde si funkci zalozim a priradim si do dvou neznamych
if ($exp){------------------------------------------------tady provedu if jestli $exp!=0 (mam pravdu?)
return $zaklad * mocnina($zaklad, $exp - 1);-----------mno a tadyhletomu zapisu uz nerozumim :(
}
return 1;
}
jijik
Profil *
ehm rekurzivne?
to je to ze je to jakoby porad dokola ve funkci?
koudi
Profil
Rekurze je taková zajímavá věc. Máš funkci, ketrá v určitém bodě volá sama sebe. Prostě jako když ji zavoláš normálně, ale uvnitř sebe sama.
V praxi se to ale moc nepoužívá a na takovouhle funkci už vůbec ne.

http://cs.wikipedia.org/wiki/Rekurze


Existujou na to i vtípky jako "Abychom si definovali pojem rekurze, musíme se nejdřív vysvětlit pojem rekurze". Nebo ještě lepší je vysvětlení ve slovníku "rekurze: viz. rekurze". To jen tak na okraj.
k
Profil *
jijik
$zaklad * mocnina($zaklad, $exp - 1);

budes chtit 3^3

deje se toto
3 * 3^2
3* 3* 3^1
3 * 3 * 3 * 1
--konec
Miloš
Profil
Pokud jde o rekurzi, vzpomněl jsem si na tyto dva hezké vtipy:
1) Abychom mohli definovat rekurzi, musíme nejprve definovat rekurzi.
2) „Ťuk ťuk ťuk!“ * „Kdo tam?“ * „Rekurze.“ * „Kdo tam?“ * „Ťuk ťuk ťuk!“

koudi
Tzv. rekurze ... tomu se v praxi snaž v drtivé většině případů vyhnout ..
Je pro to krom risika zacyklení nějaký důvod?
jijik
Profil *
moh by mi nekdo vysvetlit tento zapis?

return $zaklad * mocnina($zaklad, $exp - 1);

nedovedu si presne predstavit jak to funguje...
jinak diky za vysvetleni rekurze
jijik
Profil *
anebo jak by se jinak co nejjednoduseji napsal script na delani x na entou? ale opravdu uplne nejak basic
souki
Profil
jednořádková funkce není dost jednoduchá?
Alphard
Profil
anebo jak by se jinak co nejjednoduseji napsal script na delani x na entou?
já bych ho nepsal, ale podíval se do manuálu: pow() :-)
jijik
Profil *
ano jeden radek je akorat ale jak sem psal vys, nerozumim tomu zapisu... mohl by mi to pls nekdo objasnit?? proc je to v zavorce hned za neznamou?
fajzen
Profil
je to nejak takto:
- zavoláš funkciu mocnina(2,3)
- keďže 3!=0 -platí prvá vetva podmienky
- vykoná sa 2* a teraz sa znovu zavolá funkcia mocnina ale s parametrami 2 a 3-1(čiže 2)
- táto dvojka zostáva a pridá sa k nej ďalšia, ktorá vznikla opetovným volaním funkcie, čiže teraz máš 2*2*mocnina(2,1) a znovu sa volá funkcia mocnina, ktorá pridá ďlašie 2*
- teraz už máš 2* 2* 2* mocnina(2,0)
- teraz sa $exp rovná 0, čiže false, čiže sa prevedie druhá vetva podmienky- pridá sa jednotka...
výsledok:
2*2*2*1
ak teda zavoláš funkciu mocnina(2,3) takto:
echo mocnina(2,3);
výpis bude
8
jijik
Profil *
dekuji fajzen :)
jijik
Profil *
a mohl by mi pls nekdo jeste objasnit tuto funkci?
moc ji nerozumim, kam se pricte ta 1 nebo odecte...



<?php

function podle_delky($a, $b){
$l_a = strlen($a);
$l_b = strlen($b);
if ($l_a == $l_b)return 0;
return ($l_a < $l_b) ? -1 : 1 ;
}

$zeme = array ("ca" => "Kanada",
"cr" => "Kostarika",
"de" => "Německo",
"uk" => "Velká Británie",
"us" => "Spojené státy");

usort ($zeme, podle_delky);

while (list ($nazev , $hodnota) = each ($zeme)){
echo "$nazev ma hodnotu $hodnota<br>";
}
?>
Hugoman
Profil *
Lol, toto neni kniha o php... vysvetlite tuto funcki, hentu.... tu je diskusia.... :), skus si najprv precitat nejaky honosny manual a tak ak pride nejaky vacsi problem, podla mna by chcel kazdy nejaku zapeklitejsiu vec riesit, ako listovanie pola, co sa berie tak v 2-3 lekcii v knihe :)
Toto téma je uzamčeno. Odpověď nelze zaslat.