» »

rekurzivno iskanje max elementa v tabeli

rekurzivno iskanje max elementa v tabeli

inglog ::

Napisal sem iterativno rešitev za iskanje največjega elementa v poljubno veliki tabeli elementov.

Zdej pa tega ne znam pretvorit v rekurzivno različico, da bi primerjal čase iskanja.

Iterativna varianta gre tkole:

procedure najvecjiElIterativno;
var i,najvecji,rez:integer;
begin
najvecji:=tabR[0].key;
for i:=1 to stEl do
begin
if najvecji < tabR[i].key then
begin
najvecji:=tabR[i].key
end;
end;
rez:=najvecji;
Form1.Edit2.Text:=inttostr(rez);
end;

Zdej bi pa prosu, če zna kdo tole dat v rekurzivno varianto, da mi prosim pomaga.
Bil bi full vesel, tnx!

Gundolf ::

Upam da vsaj veš kaj je rekurzija.

Narediš funkcijo, ki kot argumente sprejme do zdaj največji najdeni element in še nepregledano tabelo.
V tej funkciji pogledaš če je prvi element podane tabele večji od do sedaj najdenega maximuma in če je, si ga zapomniš kot nov maximum.
V primeru, da je v tabeli poleg prvega še kakšen element, kličeš isto funkcijo, s tem da ji podaš novi/stari max element in tabelo brez prvega elementa (ki si ga ravno pregledal).

To je to.

inglog ::

Gundolf: Upam, da vsaj veš kaj je rekurzija...:D s temle si me pa cist ozalu no.

Nimam problemov okrog tega, da ne bi vedu, da gre za to, da funkcija klice samo sebe.

Zgodovina sprememb…

  • spremenil: inglog ()

Vesoljc ::

in kje je potem problem?

kako globoko si?
je trenutni večji od max?
najvčji(i+1)

tko nekak...
Abnormal behavior of abnormal brain makes me normal...

Sergio ::

Ce ze delas rekurzivno, delaj vsaj tako, da array 'razbijes' na 2 enakovredna dela, in rekurzivno klices max nad polovico, kar se rekurzivno klice, dokler ne ostane samo en element... :)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Gundolf ::

inglog: Me veseli da veš kaj je to rekurzija. Upam da boš zdaj ko veš tudi kakšen je postopek znal rešiti problem.

Sergio: Ne vidim zakaj bi bilo bolje deliti na polovico. [Popravek: ok, iskanje bolj v širino kot globino - zdaj mi je jasno]

Zgodovina sprememb…

  • spremenil: Gundolf ()

Phil ::

int max_stevilo=0;
int *tabela;

int max(int indeks) {
if(tabela[indeks]>max_stevilo)
max_stevilo=tabela[indeks];
if (indeks>0) return max(indeks-1); else return max_stevilo;
}

Ta enostavna varianta. Klices max(elementov-1).
LP

Zgodovina sprememb…

  • spremenil: Phil ()

inglog ::

Kaj pravite na tole :D

Procedure NajvecjiEl(el,max: integer);
begin
if(tabR[el].key>max) then max:=tabR[el].key;
if (el > 0) then NajvecjiEl(el-1, max);
end;

Sergio: tvoj predlog mi je všeč, ker koker se jst tole kej spomnem s predavanj bo to tut hitrejš...a? Ravno čase moram primerjat z iterativno varianto. Ampak kako to realizirat:D ? Prosim.

LP


Vredno ogleda ...

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

Algortimi (matematična indukcija)

Oddelek: Programiranje
71499 (1227) lebdim
»

Rekurzija

Oddelek: Programiranje
82384 (1844) lebdim
»

Java metode;

Oddelek: Programiranje
354963 (4155) ragezor
»

[Turbo Pascal] Pomoč...

Oddelek: Programiranje
131476 (1378) Grey
»

rekurzija - problem?

Oddelek: Programiranje
373814 (3378) Vesoljc

Več podobnih tem