Forum » Pomoč in nasveti » rekurzije
rekurzije
bunn98 ::
Pozdravljeni, a mi lahko kdo nariše in razloži sled za program, ki izračuna produkt dveh števil?
Metoda:
public static int produkt(int a, int b){
if (b == 0)
return 0;
else
return produkt(a,b-1) + a;
To sem dal primer zdej, čisto zato, da bi razumel te sledi nasplošno :).
Hvala!
Metoda:
public static int produkt(int a, int b){
if (b == 0)
return 0;
else
return produkt(a,b-1) + a;
To sem dal primer zdej, čisto zato, da bi razumel te sledi nasplošno :).
Hvala!
GupeM ::
Recimo, da imata na začetku a in b vrednosti a=5, b=6.
Najprej se kliče funkcija produkt(a, b), dokler b==0
Nato vsi te klici vračajo vrednosti v obratnem vrstnem redu in prištevajo vrednost a.
Tako ti zadnji klic vrne vrednost 30, kar pa je produkt števil 5 in 6.
Najprej se kliče funkcija produkt(a, b), dokler b==0
produkt(5,6) produkt(5,5) produkt(5,4) produkt(5,3) produkt(5,2) produkt(5,1) produkt(5,0)
Nato vsi te klici vračajo vrednosti v obratnem vrstnem redu in prištevajo vrednost a.
produkt(5,0) vrne 0; produkt(5,1) //vrne vrednost, ki jo je vrnil prejšnji klic + a (0+5), kar je 5 produkt(5,2) //vrne vrednost, ki jo je vrnil prejšnji klic + a (5+5), kar je 10 produkt(5,3) //vrne vrednost, ki jo je vrnil prejšnji klic + a (10+5), kar je 15 produkt(5,4) //(15+5) = 20 produkt(5,5) //(20+5) = 25 produkt(5,6) //(25+5) = 30
Tako ti zadnji klic vrne vrednost 30, kar pa je produkt števil 5 in 6.
Zgodovina sprememb…
- spremenil: GupeM ()
bunn98 ::
Hvala:)
Kaj pa recimo, da se sled razdeli na veje (neznam drugače povedat).. pač, da se metoda kliče npr. tako:
rek(n-2)+rek(n-1)
kako bi pa v tem primeru naredili sled?
pa prosim, če lahko narišete na list pa mi pošljete...
pa naprimer, če je za rekurzivnim klicem še del kode, ki se mora izvest... kako se v tem primeru nariše sled?
oz. kdaj se izvede tisti del kode
upam, da razumete, kaj sem hotel povedat.
Kaj pa recimo, da se sled razdeli na veje (neznam drugače povedat).. pač, da se metoda kliče npr. tako:
rek(n-2)+rek(n-1)
kako bi pa v tem primeru naredili sled?
pa prosim, če lahko narišete na list pa mi pošljete...
pa naprimer, če je za rekurzivnim klicem še del kode, ki se mora izvest... kako se v tem primeru nariše sled?
oz. kdaj se izvede tisti del kode
upam, da razumete, kaj sem hotel povedat.
Zgodovina sprememb…
- spremenil: bunn98 ()
GupeM ::
Na list papirja ti ne bom risal, ker verjetno želiš še pobarvano in okrašeno, lahko si pa pogledaš fibonaccijevo zaporedje. Verjetno te zanima za točno ta problem.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Programiranje v pythonuOddelek: Programiranje | 2032 (1390) | Sony-Tech |
» | Rudarjenje v oblakuOddelek: Loža | 3025 (2621) | smesko15 |
» | GarancijaOddelek: Loža | 3724 (2650) | Šimpanz |
» | Funkcije==>nalogeOddelek: Programiranje | 1748 (1588) | brulc |
» | [Naloga][Java] UlomkiOddelek: Programiranje | 2663 (2511) | SkIDiver |