Autor | Zpráva | ||
---|---|---|---|
jijik Profil * |
#1 · Zasláno: 31. 1. 2007, 17:44:57
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 * |
#2 · Zasláno: 31. 1. 2007, 17:51:36
vypocita ti mocninu 3^3 = 27 atp.
|
||
Dero Profil |
#3 · Zasláno: 31. 1. 2007, 17:54:33
Viz k, doplním, že rekurzivně.
|
||
koudi Profil |
#4 · Zasláno: 31. 1. 2007, 17:56:26
Tzv. rekurze ... tomu se v praxi snaž v drtivé většině případů vyhnout ...
|
||
jijik Profil * |
#5 · Zasláno: 31. 1. 2007, 17:56:26
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 * |
#6 · Zasláno: 31. 1. 2007, 17:56:59
ehm rekurzivne?
to je to ze je to jakoby porad dokola ve funkci? |
||
koudi Profil |
#7 · Zasláno: 31. 1. 2007, 18:00:23
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 * |
#8 · Zasláno: 31. 1. 2007, 18:32:52
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 |
#9 · Zasláno: 31. 1. 2007, 19:11:35 · Upravil/a: Miloš
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 * |
#10 · Zasláno: 31. 1. 2007, 19:19:23
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 * |
#11 · Zasláno: 31. 1. 2007, 19:22:17
anebo jak by se jinak co nejjednoduseji napsal script na delani x na entou? ale opravdu uplne nejak basic
|
||
souki Profil |
#12 · Zasláno: 31. 1. 2007, 19:38:10
jednořádková funkce není dost jednoduchá?
|
||
Alphard Profil |
#13 · Zasláno: 31. 1. 2007, 20:03:23
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 * |
#14 · Zasláno: 31. 1. 2007, 20:36:10
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 |
#15 · Zasláno: 31. 1. 2007, 20:57:48
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 * |
#16 · Zasláno: 31. 1. 2007, 21:37:20
dekuji fajzen :)
|
||
Časová prodleva: 8 dní
|
|||
jijik Profil * |
#17 · Zasláno: 8. 2. 2007, 22:12:28
a mohl by mi pls nekdo jeste objasnit tuto funkci?
moc ji nerozumim, kam se pricte ta 1 nebo odecte...
|
||
Hugoman Profil * |
#18 · Zasláno: 8. 2. 2007, 23:09:38
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 :)
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0