Un primo metodo consiste nell'usare una funzione ricorsiva di appoggio void dispari2(int x[], int i, int n) che richiama se stessa con un valore crescente di i fino a raggiungere n. In questo caso il corpo della tua funzione sarà semplicemente dispari2(x, 1, n)..
Un secondo metodo consiste nell'osservare che esistono due momenti in una chiamata ricorsiva: quello precedente alla chiamata ricorsiva e quello successivo. Il codice prima della chiamata ricorsiva viene eseguito in ordine dalla chiamata "meno profonda" a quella "più profonda", mentre il codice dopo la chiamata ricorsiva viene eseguito in ordine inverso. La soluzione in questo caso è quindi quella di stampare dopo la chiamata ricorsiva. Qualcosa come segue (pseudocodice simil python):
- Codice:
def dispari(x, n):
if n > 0:
dispari(x, n-1) # Chiamata ricorsiva..
if isOdd(n): # Stampa se l'indice è dispari
print x[n]