Stampa figura tramite ricorsione
Ciao a tutti,volevo stampare una figura tramite una ricorsione in mezzo
Per la precisione un triangolo prima rovesciato poi dritto,con entrambe le punte,il problema é riesco ad ottenere la figura ma le punte non sono unite..
output
Consigli per togliere gli spazzi??
Grazie..
void stamparombo(int n,int k=0){ if(n==0)return; for(int i=0;i<k;i++)cout<<' '; for(int j=0;j<n-k;j++)cout<<'*'; cout<<endl; stamparombo(n-1,k+1); for(int i=0;i<k;i++)cout<<' '; for(int j=0;j<n-k;j++)cout<<'*'; cout<<endl; }
Per la precisione un triangolo prima rovesciato poi dritto,con entrambe le punte,il problema é riesco ad ottenere la figura ma le punte non sono unite..
output
Consigli per togliere gli spazzi??
Grazie..
Risposte
"Spazzi"? 
Comunque, la funzione manda in cout a-capo sempre, sia che stampi qualcosa sia che non stampi nulla... questo ti dice niente?

Comunque, la funzione manda in cout a-capo sempre, sia che stampi qualcosa sia che non stampi nulla... questo ti dice niente?
"Rggb":
"Spazzi"?
ehm lo spazio,come dovrei chiamarlo

"Rggb":
"
Comunque, la funzione manda in cout a-capo sempre, sia che stampi qualcosa sia che non stampi nulla... questo ti dice niente?
Guarda,uso da poco questo tipo di ricorsione e non riesco a capire bene perchè succede e come risolverlo..

Come ha già detto Rggb, vai a capo anche quando non stai stampando nulla. Ma il vero problema NON è che vai a capo in quei casi, ma che stai proseguendo nella ricorsione anche quando non dovresti. Infatti, stampi qualcosa solo quando \((n-k) > 0\), ma ti fermi nella ricorsione solo quando \(n == 0\). Siccome \(k > 0\) ad ogni iterazione successiva alla prima, continui la tua iterazione anche quando hai già smesso di stampare. Prova a cambiare la condizione di terminazione del ciclo o a rivedere la relazione tra \(n\) e \(k\).
Ho sostituito
Pare funzionare..
Grazie adesso ci sto capendo qualcosa in più!!
if(n==0)return; con if(n<k)return;
Pare funzionare..
Grazie adesso ci sto capendo qualcosa in più!!
