Programmi C / C++ - prof. Claudio Maccherani - Perugia - 2008
Esempi di Funzioni RICORSIVE
(Fattoriale, Ricerca Binaria)
/* "prg_c_ricorsione.cpp" - Fattoriale e Ricerca Binaria (con Ricorsione e Iterazione) prof.Claudio Maccherani - Perugia - 2009 */ #include
#include
#include
#include
using namespace std; int N,v[21],acc; void gotoRC(short r, short c) { COORD pos = {c, r}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos); } long int FattRic(int n) { // Fattoriale con Ricorsione if (n <= 1) return 1; else return n * FattRic(n-1); } long int FattIte(int n) { // Fattoriale con Iterazione (For/While/Do-While) int x = 1; for(int i=1;i<=n;i++) x = x*i; return x; } void Riempi_vettore() { // riempimento e ordinamento vettore int x; for(int i=1;i
v[j]) { x=v[i]; v[i]=v[j];v[j]=x; } for(int i=1;i
i2) return 0; // posizione di ‘x’ se esiste oppure 0 j = (i1+i2)/2; gotoRC(j+1,15); cout << j; if (v[j] == x) return j; if (x < v[j]) Ric_Bin_Ric(x,i1,j-1); else Ric_Bin_Ric(x,j+1,i2); } int Ric_Bin_Ite(int x,int i1,int i2) { // Ricerca Binaria con Iterazione int i,n=0; acc=0; // posizione di ‘x’ se esiste oppure 0 if (x
v[i2]) return 0; // 'x' non è presente in 'v[]' while(i1 <= i2) { i = (i1+i2)/2; n++; gotoRC(i+1,10+n*10); cout << "<-"<
x) i2 = i-1; else i1 = i+1; } return 0; } int main() { // programma principale int i,n,scelta; N = 21; srand(time(0)); do { system("cls"); cout << "\n esempi di RICORSIONE (prof. Claudio Maccherani)\n\n\n"; cout << " 1 - fattoriale\n\n 2 - Ricerca Binaria\n\n 0 - fine\n\n"; cout << " scegli ... "; cin >> scelta; if (scelta == 1) { system("cls"); cout << "\n FATTORIALE\n\n"; cout<<" Fattoriale di "; cin>>n; cout<<" il Fattoriale di "<
> n; i = Ric_Bin_Ric(n,1,N-1); gotoRC(0,45); if (i>0) cout<<"Dato trovato in posizione "<
0) cout<<"Dato trovato in posizione "<