Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

rekurzija pascal resenje rucno

[es] :: Pascal / Delphi / Kylix :: rekurzija pascal resenje rucno

[ Pregleda: 6146 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nick2

Član broj: 31563
Poruke: 169
*.dynamic.sbb.rs.



+8 Profil

icon rekurzija pascal resenje rucno04.12.2010. u 17:40 - pre 162 meseci
evo ovako kao i mnogima problem su mi rekurzije, e sad imam zadatak npr da odredim sta neka rekurzija radi, ali naravno rucno na papiru, ok jasno mi je da ona poziva samu sebe do odredjenog uslova i onda stane....

uzmimo za primer ovu rekurziju

function multi(a,b:integer):integer;
var f:integer;
begin
if b=1 then
multi:=a
else
multi:=a*multi(a,b-1);
end;

predpostavim da je a=3 i b=3 //

multi:=3*multi(3,2);
multi=3*multi (3,1) -tu staje jer je b=1
i takodje ja tu stanem ne znam na koju foru dalje da racunam, kako , sta se sabira i kada da bih dobio ono sto treba ???
pomozite mucim se vec 5 dana sa ovim i taman mislim da sa ga nasao kad ono :(
Guess I'll always be a soldier of fortune...
 
Odgovor na temu

Predrag Supurovic
Pedja YT9TP
Užice

Član broj: 157129
Poruke: 6275

Sajt: pedja.supurovic.net


+1570 Profil

icon Re: rekurzija pascal resenje rucno04.12.2010. u 19:25 - pre 162 meseci
Meni nije jasno sta ti nije jasno. Stvar je prilicno ocigledna.
 
Odgovor na temu

nick2

Član broj: 31563
Poruke: 169
*.dynamic.sbb.rs.



+8 Profil

icon Re: rekurzija pascal resenje rucno04.12.2010. u 23:49 - pre 162 meseci
pa nije mi jasno kako da resim, sta radi ova rekurzija, kojim sistemom ide, ako bi bili ljubazni korak po korak...tek sam pocetnik pa malo dok se ne uhodam ide teze
Guess I'll always be a soldier of fortune...
 
Odgovor na temu

krle_zr

Član broj: 96307
Poruke: 258
*.dynamic.isp.telekom.rs.



+7 Profil

icon Re: rekurzija pascal resenje rucno05.12.2010. u 07:03 - pre 162 meseci
http://www.gimnazijaso.edu.rs/...red/za-takmicare/rekurzija.php

 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.zaslon-telecom.si.



+14 Profil

icon Re: rekurzija pascal resenje rucno06.12.2010. u 10:20 - pre 162 meseci
Uzmimo nešto prostije za primer rekurzije, npr računanje faktorijala:

Fakt(3) = 3 * 2 * 1
Fakt(I) = I * (I-1) * (I-2) ... (I-n), dok je n < I

Paskal rešenje:

Code:

function Fakt(N: Integer): Integer
begin
  if N > 1 then
    Result := N * Fakt(N-1)
  else
    Result := 1;
end;


Posmatraj ovo kao da se svaki put kad se dodje do linije Result := N * Fakt(N-1) poziva nova funkcija sa drugim imenom. Druga funkcija ima svoje odvojene promenjive i odvojen rezultat. Ovako izgleda "odmotani" kod kad je N=3:

Code:

function Fakt3: Integer
begin
  Result := 3 * Fakt2();
end;

function Fakt2: Integer
begin
  Result := 2 * Fakt1();
end;

function Fakt1: Integer
begin
  Result := 1;
end;



if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

nick2

Član broj: 31563
Poruke: 169
*.dynamic.sbb.rs.



+8 Profil

icon Re: rekurzija pascal resenje rucno06.12.2010. u 16:23 - pre 162 meseci
hvala svima na odgovorima @Boris B tvoj odgovor sa faktorijalima sam razumeo, nazalost to mi nije pomoglo da shvatim tacno kako da resim moju rekurziju,,, tj, prostije receno sta ona radi (koju operaciju npr)
Guess I'll always be a soldier of fortune...
 
Odgovor na temu

Picsel
Beograd

Član broj: 39817
Poruke: 440
95.180.86.*



+7 Profil

icon Re: rekurzija pascal resenje rucno06.12.2010. u 17:45 - pre 162 meseci
Evo na tvom primeru za a=3 i b=3
multi(3,1)=3
multi(3,2)=3*multi(3,1)
multi(3,3)=3*multi(3,2)
Zamenom, dobije se
multi(3,3)=3*multi(3,2)=3*3*multi(3,1)=3*3*3
Ocigledno, funkcija ce se izracunati b puta (u ovom primeru 3 puta). Pri svakom pozivu mnozice se sa a.
Odnosno, tvoja rekurzija vrsi operaciju stepenovanja, a^b.

 
Odgovor na temu

nick2

Član broj: 31563
Poruke: 169
*.dynamic.sbb.rs.



+8 Profil

icon Re: rekurzija pascal resenje rucno06.12.2010. u 20:19 - pre 162 meseci
ok mislim da sam shvatio, ispravi me ako gresim
onda bi resenje ove bilo

var pom:integer;
function calc (x,y:integer) :integer;
begin
if (y=1) then
calc:=x

else
calc:=calc (x,y-1)+x

end;

predpostavim uzmimo isto x=3 i y=3
1) calc(3,3)=calc (3,2)+3
2) calc (3,2)=calc (3,1)+3
3) calc =3

i sad saberem ove trojke, 3+3+3 to je 9 , znaci ova bi vrsila mnozenje x i y....
tj calc(3,3)=calc(3,2)+3+3=calc(3,1)=3+3+3 =9


Guess I'll always be a soldier of fortune...
 
Odgovor na temu

Picsel
Beograd

Član broj: 39817
Poruke: 440
217.24.24.*



+7 Profil

icon Re: rekurzija pascal resenje rucno07.12.2010. u 11:19 - pre 162 meseci
Da.
 
Odgovor na temu

nick2

Član broj: 31563
Poruke: 169
*.dynamic.sbb.rs.



+8 Profil

icon Re: rekurzija pascal resenje rucno07.12.2010. u 18:39 - pre 161 meseci
hvala puno, pomogli ste mi da shvatim i tu famoznu rekurziju
Guess I'll always be a soldier of fortune...
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.zaslon-telecom.si.



+14 Profil

icon Re: rekurzija pascal resenje rucno09.12.2010. u 08:50 - pre 161 meseci
Ne zaboravi samo da je cela poenta rekurzije da svaki rekurzivni poziv ima svoje odvojne promenjive, koje nemaju nikakve veze sa promenjivama iz prethodnog poziva. To je najbitnija stvar, jer inace bi svaki problem mogao jednostavnije da se napise sa obicnom while petljom.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

devetkamp
Dusan Mijajlovic
PMF- Nis, MATEMATIKA - I godina
Prokuplje

Član broj: 293179
Poruke: 113
*.sc.ni.ac.rs.



+1 Profil

icon Re: rekurzija pascal resenje rucno21.09.2013. u 15:27 - pre 128 meseci
Jel moze pomoc oko zadatka?

1. Napisati rekurzivnu funkciju za odredjivanje maksimalnog elementa niza a.

program rekurzija;
type niz=array[1..50] of integer;
var a:niz;
i,n:integer;
function Maxel(n:integer; var a:niz):integer;
var i,max:integer;
begin
max:=a[n];
for i:=1 to n do
if max>a then maxel:=max
else maxel(n-1,a);
end;
begin
readln(n);
begin
for i:=1 to n do
readln(a);
end;
writeln(Maxel(n,a));
end.

Gde gresim? Unapred zahvalan. ;)
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: rekurzija pascal resenje rucno29.09.2013. u 20:14 - pre 127 meseci
Rešenje u Delphiju, ne znam da li ce raditi u čistom Pascalu.

Code:

program rekurzija;
{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  niz = array[1..50] of Integer;

function Maxel(n: Integer; const a: niz): Integer;
var
  Temp: Integer;
begin
  if n > 0 then
  begin
    Result := a[n];

    Temp := Maxel(n - 1, a);

    if Temp > Result then
      Result := Temp;
  end
  else
    Result := Low(Integer);
end;

var
  a: niz;
  i, n: Integer;
begin
  WriteLn('Unesite broj elemanta niza');
  readln(n);
  WriteLn('Unesite elemente niza');
  for i := 1 to n do
    ReadLn(a[i]);

  writeln('Najveci broj u nizu je: ' + IntToStr(Maxel(n, a)));
  Readln;
end.

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: rekurzija pascal resenje rucno

[ Pregleda: 6146 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.