» »

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!

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
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.

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.

bunn98 ::

Hvala:)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Programiranje v pythonu

Oddelek: Programiranje
142012 (1370) Sony-Tech
»

Rudarjenje v oblaku

Oddelek: Loža
62999 (2595) smesko15
»

Garancija

Oddelek: Loža
373714 (2640) Šimpanz
»

Funkcije==>naloge

Oddelek: Programiranje
131742 (1582) brulc
»

[Naloga][Java] Ulomki

Oddelek: Programiranje
62657 (2505) SkIDiver

Več podobnih tem