Forum » Programiranje » [C++] Rekurzija
[C++] Rekurzija
A1eN ::
lp
neki me mal muči rekurzija,....
radi bi izrisal zvezdice => *,...in sicer tako
*
**
***
**** = n
n je število ki ga dobi funkcija,.. treba je uporabit povratno rekurzijo sam mi ni jasno kako,...
ps:. v obratnem vrstnem redu sem pa že pogruntu,
prosim za pomoč
neki me mal muči rekurzija,....
radi bi izrisal zvezdice => *,...in sicer tako
*
**
***
**** = n
n je število ki ga dobi funkcija,.. treba je uporabit povratno rekurzijo sam mi ni jasno kako,...
ps:. v obratnem vrstnem redu sem pa že pogruntu,
int trikotnik_n_1(int n){
if (n>0){
for (int i=0; i < n; i++}
cout < < "*" ;
cout < < "\n" ;
return trikotnik_n_1(n-1);
}
if (n < 0 )
cout< < " Vnesel si nedovoljeno vrednost";
return -1;
}
prosim za pomoč
OwcA ::
Lahko recimo uvedeš še en argument, ki ti pove kje v dani vrstici si (to trenutno počne i).
Otroška radovednost - gonilo napredka.
Zgodovina sprememb…
- spremenilo: OwcA ()
Quikee ::
Something like...
void trikotnik_n_1(int n) { if (n>0) { trikotnik_n_1(n-1); } if (n < 0 ) { cout< < " Vnesel si nedovoljeno vrednost"; return; } for (int i=0; i < n; i++) { cout << "*" ; cout << "\n" ; }
A1eN ::
ok,..
Zdej me pa zanima zakaj mi noče pravilno izračunati naslednjo vrsto:
Zdej me pa zanima zakaj mi noče pravilno izračunati naslednjo vrsto:
n=4 1/1+1/2+1/3+1/n Koda: float vrsta(int n){ if (n>0) return (vrsta(n-1)+(1/n)); else return 1; }
Zgodovina sprememb…
- spremenil: Vesoljc ()
sherman ::
Zato ker greš z n-jem predaleč in ker je n tipa int in pri deljenju 1/n, če je n > 1 je rezultat 0.
float vrsta(int n){ if (n>1) return (vrsta(n-1)+1/float(n)); else return 1; }
Gundolf ::
Če pa hočeš izpast kot da obvladaš pa uporabi 'operator ?' :)
Če hočeš pri deljenju dobiti rezultat v floatu (ali doublu) mora eden izmed operandov biti float (ali double), ker drugače bo rezultat tipa int, le ta pa ne more imeti nobenih decimalk. 1 je tipa int. 1.0 je tipa double, 1.0f je tipa float. Tako lahko že s številsko konstanto določiš kakšno deljenje hočeš. Če imaš pa dva operanda tipa int in želiš float deljenje pa enega explicitno pretvoriš v float (recimo float(n) ali enako dobro (float)n).
float vrsta(int n) { return (n > 0 ? vrsta(n-1) + 1.0f/n : 0); }
Če hočeš pri deljenju dobiti rezultat v floatu (ali doublu) mora eden izmed operandov biti float (ali double), ker drugače bo rezultat tipa int, le ta pa ne more imeti nobenih decimalk. 1 je tipa int. 1.0 je tipa double, 1.0f je tipa float. Tako lahko že s številsko konstanto določiš kakšno deljenje hočeš. Če imaš pa dva operanda tipa int in želiš float deljenje pa enega explicitno pretvoriš v float (recimo float(n) ali enako dobro (float)n).
A1eN ::
Najlepša hvala obema,.točno tko, vedno mi je samo 0 upoštevalo,...
tisto z operatorjem je pa zelo dobrodošlo,..skrajša kodo,..
lp
tisto z operatorjem je pa zelo dobrodošlo,..skrajša kodo,..
lp
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Java, eno vprašanjeOddelek: Programiranje | 646 (592) | Blinder |
» | C# (strani: 1 2 )Oddelek: Programiranje | 12092 (8927) | Ericssony |
» | Pomoč z C++ nalogoOddelek: Programiranje | 1437 (1244) | denis123 |
» | Program v COddelek: Programiranje | 1940 (1779) | darkkk |
» | [C++] LinuxOddelek: Programiranje | 1964 (1384) | CCfly |