» »

[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,

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" ;
}

yeti ::

"In order to understand recursion, one must first understand recursion."

A1eN ::

ok,..

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 ?' :)
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



Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Java, eno vprašanje

Oddelek: Programiranje
7606 (552) Blinder
»

C# (strani: 1 2 )

Oddelek: Programiranje
9711908 (8743) Ericssony
»

Pomoč z C++ nalogo

Oddelek: Programiranje
101404 (1211) denis123
»

Program v C

Oddelek: Programiranje
51891 (1730) darkkk
»

[C++] Linux

Oddelek: Programiranje
171939 (1359) CCfly

Več podobnih tem