|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Bannato
Iscritto dal: Jun 2005
Messaggi: 41
|
[c++] funzione ricorsiva
ciao a tutti.
qualcuno può gentilmente aiutarmi come faccia questo programmino a restituire in output 1 2 3??? ![]() Codice:
#include<iostream> using namespace std; void conta(int n){ if(n>0) { conta(n-1); cout<<n; } } int main(){ conta(3); system("pause"); return 0; } ho letto anche alcune pagine a riguardo, ma nn avevo mai visto niente del genere. potete spiegarmi come funziona??? grazie in anticipo ![]() saluti |
![]() |
![]() |
![]() |
#2 |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Qui non si tratta tanto del linguaggio, quanto dei fondamenti.
Sai cosa vuol dire che una funzione è ricorsiva? Vuol dire che, durante la propria esecuzione su un input, può adoperare i risultati delle sue esecuzioni su input diversi. Se tieni a mente la definizione, e ricordi il funzionamento del passaggio degli argomenti per valore, allora è abbastanza chiaro come fa conta(3) a produrre l'output "123". Fai un piccolo sforzo...
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
![]() Una funzione ricorsiva è una funzione che dal suo interno richiama se stessa.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#4 | |
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu |
|
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
"... delle sue esecuzioni su input diversi ..." Cosa sarebbero e cosa intendi per "esecuzione su un input" e per "input diversi"???
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Questo è un argomento abbastanza basilare, senza capire come lavorano le funzioni si va da poche parti.
In ogni caso basta seguire passo passo l'esecuzione per capire come mai in uscita si ottinene 123 main chiama conta(3) conta(3) entra nell'if e chiama conta(2) conta(2) entra nell'if e chiama conta(1) conta(1) entra nell'if e chiama conta(0) conta(0) non entra nell'if e termina conta(1) prosegue nell'esecuzione con cout << 1 e termina conta(2) prosegue nell'esecuzione con cout << 2 e termina conta(3) prosegue nell'esecuzione con cout << 3 e termina ... |
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Jun 2005
Messaggi: 41
|
ok capito perfettamente grazie a tutti. in particolare a tomminno per la semplicità ed immediatezza nella spiegazione
saluti |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:06.