Rekurzija - C jezik

1

Rekurzija - C jezik

offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

Trebaju mi rekurzivne funckije iz C programskog jezika, ukapirao sam da one mogu da posluže kao petlja jer pozivaju same sebe i tako prave loop, ali imam nejasnoća u vezi sintakse i pomalo logike. Može li neko da postavi neki najprostiji primjer na kojem bih mogao da to shvatim i da dalje napredujem? Smile



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14459
  • Gde živiš: Niš

Evo recimo funkcije za izračunavanje faktorijela: faktorijel(int x) {     if(x == 0)         return 1;     else return x * faktorijel(x - 1); } Dakle, kod rekurzije su dve stvari bitne:
- uslov za izlazak iz rekurzije odnosno za završetak rekurzije, i on je maltene najbitna stvar, a i najčešći uzrok grešaka
- rekurzivni poziv funkcije - funkcija poziva samu sebe, ali gotovo obavezno sa izmenjenim parametrom



offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

Da ali imam problem sad sa glavnim programom, kako da ga uklopim sa funkcijom?

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14459
  • Gde živiš: Niš

Auh. Shocked

Glavni program je takođe funkcija. Dakle, imaš dve funkcije jednu pored druge. Very Happy Nakon toga samo u glavnoj funkciji pozoveš funkciju za faktorijel sa konkretnim parametrom i dobiješ rezultat.

offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

Imaš li još neke primjere osim ovog faktorijela?

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14459
  • Gde živiš: Niš

Imam u glavi, da. Smile Ali ne bih da pišem sada sve to, pošto je, siguran sam, na netu sve to ispisano mali milion puta. Dakle, tastaturu u ruke i traži. Very Happy

offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

Dobio sam zadatak da izračunam preko rekurzivne funkcije koliko unijeti broj ima cifara . Neutral Help me. Neutral Nemam orijentacije.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14459
  • Gde živiš: Niš

Ovo bi bila neka rekurzivna formula: brojCifara(1234) = 1 + brojCifara(123). Počni odatle.

offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

vasa.93 ::Ovo bi bila neka rekurzivna formula: brojCifara(1234) = 1 + brojCifara(123). Počni odatle.

Shocked Ne razumijem, kako da od zadatog broja prepoznam broj cifara, mislim da smo u školi dijelili zadati broj sa 100 ili sa 10 i to je bilo u glavnom programu, ali koja je sad fora sa rekurzivnom funkciom tu, ja ne znam.

offline
  • Milan
  • Pridružio: 17 Dec 2007
  • Poruke: 14459
  • Gde živiš: Niš

Samo brojiš jednu po jednu cifru. Dakle, broj cifara bilo kog broja jednak je zbiru jedinice i broja cifara tog istog broja bez poslednje cifre. Poslednju cifru broja "uklanjaš" tako što taj broj podeliš sa 10.

Ko je trenutno na forumu
 

Ukupno su 628 korisnika na forumu :: 9 registrovanih, 0 sakrivenih i 619 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: ALBION101, Boris90, comi_pfc, Dimitrise93, ekser222, Kruger, MORAVA1, shaja1, softwaremaniac