Rekurzija - C jezik

2

Rekurzija - C jezik

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Aj... evo funkcije, pa nam ti napiši kako misliš da ona radi:
int brojCifara(int i) {   if (i / 10 != 0)     return 1 + brojCifara(i / 10);   else     return 1; }



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Miloš
  • Pridružio: 23 Maj 2011
  • Poruke: 1069

Napisano: 19 Mar 2015 9:04

Srki_82 ::Aj... evo funkcije, pa nam ti napiši kako misliš da ona radi:
int brojCifara(int i) {   if (i / 10 != 0)     return 1 + brojCifara(i / 10);   else     return 1; }


Sad bih u glavnom programu trebao da imam nešto što sabira ove jednice koje proslijedi funkcija? I kasnije samo da ispišem sabirak?

Dopuna: 19 Mar 2015 9:07

nešto kao S = S + brojCifara(i) ?

Dopuna: 19 Mar 2015 9:16

Da, evo sam završio:

#include<stdio.h> int brojCifara (int); main() {    int N, S=0;        printf("Unesite broj: ");    scanf("%d",&N);        S = S + brojCifara(N);        printf("Broj cifara je %d",S);        getch(); } int brojCifara (int N) { if (N/10 != 0)    return 1+brojCifara(N/10);     else    return 1; }     

Hvala vam Ziveli



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

Miloš CG ::Sad bih u glavnom programu trebao da imam nešto što sabira ove jednice koje proslijedi funkcija?Funkcija ne prosleđuje jedinice već vraća broj cifara broja koji je prosleđen kao parametar.
Miloš CG ::nešto kao S = S + brojCifara(i) ? Ako je S = 0, da li možeš da nam pojasiš čemu onda sabiranje sa nulom? Umesto toga skroz bi validno bilo i:
S = brojCifara(N);pa i ovo:
printf("Broj cifara je %d", brojCifara(N));

offline
  • Pridružio: 11 Apr 2012
  • Poruke: 98

Kao sto Vasa kaze "funkcija ne prosleđuje jedinice već vraća broj cifara" (kada se pozove u glavnom programu)...a da bi ona na kraju vratila broj cifara ona ce sama SEBI da prosledjuje jedinice, ali u glavni program vraca SAMO krajnji rezultat, tako da je koristis kao i svaku drugu f-ju
Npr za broj 1903:
S = brojCifara(1903);

zatim racuna:
brojCifara(1903)=1+brojCifara(190)
brojCifara(1903)=1+(1+brojCifara(19))
brojCifara(1903)=1+(1+(1+brojCifara(1)))
brojCifara(1903)=1+(1+(1+1))
brojCifara(1903)=4

i onda vrati u glavni program:
S=4;

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

Okej, ukapirao sam sad. Wink Mislio sam da sabira jednice, ali sad mi je jasno. Hvala vam Smile

Ko je trenutno na forumu
 

Ukupno su 870 korisnika na forumu :: 49 registrovanih, 11 sakrivenih i 810 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 8u47, _Sale, A.R.Chafee.Jr., alkatraz080, altec.gs, Apok, bojank, cemix, Cirkon, comi_pfc, croato, Ctrl x, DeerHunter, djboj, Djokkinen, Faki-Valjevo, Insan, ivan979, ivica976, Jovan Nenad, Koca Popovic, krkalon, liman, Marko Marković, menges, mercedesamg, mnn2, moldway, mushroom, nenad81, ostoja, Pavac, Profica, Rakenica, raskoljnikov, royst33, ruso, sevenino, Tas011, theNedjeljko, Toni, trajkoni018, virked, Vlada1389, vlvl, vobo, willie, yrraf, zixo