La funzione ha come scopo quello di ritornare un valore.La stampa la puoi fare ler il debug, ma non confondere le cose.Le stai mischiando.codice:int conta(int *v, int i, int j, int elem){ int occorrenze=0; if(i==j){ printf("L'array ha un solo elemento: %d\n", *v); // controlla se v[i] è uguale a elem e se si, incrementa il risultato } else if(i<j) { // controlli sia v[i] che v[j] //Chiamate ricorsive } return occorrenze; }
La parte "contorta" sta nell' effettuare le chiamate ricorsive.
Nel tuo caso ti basta chiamare la stessa funzione, ma passandogli come parametri i+1 e j-1.La chiamata va fatta esattamente come la fai nel main,ma con parametri diversi.
Quindi ad esempio:
Le chiavi per capire la ricorsione sono capire:codice:occorrenze+=conta(v,i+1,j-1,elem);
-Quando fermarsi;
-Con che parametri effettuare la (o le) chiamata ricorsiva;

Rispondi quotando