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: 14502
  • 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 331 korisnika na forumu :: 4 registrovanih, 0 sakrivenih i 327 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: draggan, ILGromovnik, kybonacci, zlaya011