Non capisco questo passaggio, sui vettori

di il
4 risposte

Non capisco questo passaggio, sui vettori

Mi si è presentato questo codice, un po curioso devo dire, perchè mi sono imbattuto in una cosa nuova...ovvero:

#include <stdio.h>

#define SIZE 10

void whatIsThis(int [], int);

main()

{
      int total, a[SIZE] = {32,27,64,18,95,14,90,70,60,37};
      
      printf("I valori sono:\n\n");
      
      whatIsThis(a, SIZE);
      
      printf("\n");
      
     return 0;
      }
      
      void whatIsThis(int b[], int size){
           
          if(size > 0){
                  
           whatIsThis(&b[1], size - 1);
           
           printf("%d  ", b[0]);
           }
           }
non mi è chiaro il funzionamento di questa parte: whatIsThis(&b[1], size - 1);
in pratica l'algoritmo si fonda su uno spostamento di valori...dato da un operatore di assegnamento su un vettore...è la prima volta che mi capita di vederlo al difuori di uno scanf..ma se non ho capito male, essendo tutto riconducibile ad una ricorsione, assegna all'elemento 1 del vettore, il valore di b size - 1??cioè, 37...e nel secondo come va??

4 Risposte

  • Re: Non capisco questo passaggio, sui vettori

    Quella funzione non fa altro che trasformare una scansione normale in una ricorsione, stampando i valori del vettore. Praticamente al primo richiamo li passi il vettore che coincide con v[0], la ricursione chiama v[1] togliendo 1 dal size e così via fino a trovarsi col size = 0. A quel punto stampa il v[0] che in ricursione stamperà v[1],v[2]....ecc.
    Usa il debugger e te ne accorgi.
  • Re: Non capisco questo passaggio, sui vettori

    Ok..sky...non cambia alcun valore, cambia il modo di leggere il valore...chiaramente, se i vettori sono passati prima partendo da 1, otterrò 32,27,64 ecc...dopo la ricorsione partendo da 0, 37,60,70...ecc..ma in tutto questo perchè, usare (&b[...?
  • Re: Non capisco questo passaggio, sui vettori

    E cosa usava? l'indirizzo dell i-esimo elemento come lo prendi: con &b.
  • Re: Non capisco questo passaggio, sui vettori

    Ok...ora mi è chiaro...
Devi accedere o registrarti per scrivere nel forum
4 risposte