Vedo di dire quello che riesco a seguito delle mie conoscenze...
Questa parte di codice:
#include <stdio.h>
#define SIZE 10
// prototipo di funzione
void someFunction(const int b[], size_t startIndex, size_t size);
// la funzione main inizia l'esecuzione del programma
int main(void)
{
int a[SIZE] = { 8, 3, 1, 2, 6, 0, 9, 7, 4, 5 }; // inizializza a
-Si ha la definizione della dimansione array #define SIZE 10.
-Si ha il protipo di funzione void someFunction(const int b[], size_t startIndex, size_t size);
e il void si usa solo per le funzioni, in sostanza non si avranno valori numerici esplicitati.
-Si entra nel main e viene inizializzato l'array che ovviamente è di SIZE 10 e ad ha 10 in valori per ogni indice.
puts("Answer is:");
someFunction(a, 0, SIZE);
puts("");
-Si ha una stampa con una newline data da puts.
-Si ha una invocazione della funzione someFunction(a, 0, SIZE);
e considerando che siamo nel main, si sa che si possono trattare dei valori numerici che a loro volta verranno poi mandati in stampa a video
// Cosa fa questa funzione?
void someFunction(const int b[], size_t startIndex, size_t size)
{
if (startIndex < size) {
someFunction(b, startIndex + 1, size);
printf("%d ", b[startIndex]);
}
}
E adesso siamo nel pieno del void dove si ha il cuore degli step ricorsivi, cioè e qui che accade la ricorsione e viene poi mandata al main per essere a sua volta stampata a video.
Io quello che non sto capendo, sono queste due righe:
if (startIndex < size) {
someFunction(b, startIndex + 1, size);
1) A cosa si riferisce starIndex?
2) size si riferisce al valore 10 dell'array, cioè SIZE10?
3) E cosa fa questa parte? someFunction(b, startIndex + 1, size);
P.S. Il mio problema è che non sto capendo l'operazione in se della parte di codice che per me è incriminata, ma in generale, comprendo come operano i programmi!