








Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
teoria degli algoritmi ricorsivi del corso di informatica
Tipologia: Dispense
1 / 14
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!









unsigned long long int RFact ( int n ) { if ( n > 2) return n * RFact ( n - 1); if ( n > 0) return n ; }
int main () { int n = -1; while ( n < 1) { printf ( " n > 0: " ); scanf ( " % d " , & n ); } printf ( " n! = % lld \ n " , RFact ( n )); return 0; }
void stampaNumeroDispari ( int n ) { printf ( " Numero dispari : % d \ n " , n ); if ( n > 1) { stampaNumeroPari ( n - 1); } }
void stampaNumeroPari ( int n ) { printf ( " Numero pari : % d \ n " , n ); stampaNumeroDispari ( n -1); }
int main () { int n = 0; while ( n <= 0) { printf ( " n : " ); scanf ( " % d " , & n ); } if ( n % 2 == 0) { stampaNumeroPari ( n ); } else { stampaNumeroDispari ( n ); } }
int mossa ;
void muovi ( int nd , char pP , char pA ) { char invio ; mossa = mossa + 1; printf ( " \ n %3 d " , mossa ); printf ( " : muovi disco % d da % c a % c " , nd , pP , pA ); scanf ( " % c " , & invio ); return ; }
void hanoi ( int n , char pP , char pA , char aux ) { if ( n == 1) muovi (1 , pP , pA ); else { hanoi ( n - 1 , pP , aux , pA ); muovi (n , pP , pA ); hanoi ( n - 1 , aux , pA , pP ); } }
int main () { mossa = 0; printf ( " Mosse da eseguire per spostare % d dischi \ n " , DISCHI ); hanoi ( DISCHI , ’A ’ , ’B ’ , ’C ’ ); return 0; }
void BinGen ( int a [] , int n , int b ) { if ( b == 0) { stampaArray (a , n ); } else { a [ b - 1] = 0; BinGen (a , n , b - 1); a [ b - 1] = 1; BinGen (a , n , b - 1); } }
void quicksort ( int a [] , int l , int r ); int partition ( int a [] , int l , int r ); int n ;
int main () { int i ; n = 10; int a [] = {5 , 4 , 12 , 2 , 7 , 12 , 18 , 4 , 1 , 3}; quicksort (a , 0 , 9);
for ( i = 0; i < n ; i ++) printf ( " % d " , a [ i ]); printf ( " \ n " );
return 0; }
void quicksort ( int a [] , int l , int r ) { int j ; if ( l < r ) { j = partition (a , l , r ); quicksort (a , l , j -1); quicksort (a , j +1 , r ); } } int partition ( int a [] , int l , int r ) { int pivot , i , j , t ; pivot = a [ l ]; i = l ; j = r +1; while (1) { do ++ i ; while ( a [ i ] <= pivot && i <= r ); do --j ; while ( a [ j ] > pivot ); if ( i >= j ) break ; t = a [ i ]; a [ i ] = a [ j ]; a [ j ] = t ; } t = a [ l ]; a [ l ] = a [ j ]; a [ j ] = t ; return j ; }