Beh direi che è appunto iterativo come hai detto tu, la funzione in fondo non richiama se stessa da nessuna parte...
Un esempio di funzione ricorsiva potrebbe essere questo; l'unica cosa che potrebbe sembrarti aliena è l'uso della variabile static, però leggendo queste righe dovrebbe esserti chiaro:
"Una variabile statica e' locale ad una particolare funzione. E' inizializzata
una sola volta, la prima volta che tale funzione viene chiamata e il suo
valore resta inalterato quando si esce dalla funzione, per cui quando si
richiama nuovamente la funzione tale variabile ha ancora il valore
assegnatogli precedentemente."
#include <stdio.h>
#include <stdlib.h>
#define MAX_DIM 10
int trova(const int a[], unsigned int n, int x);
int main ()
{
int vett [MAX_DIM]={3,6,4,2,8,9,1,5,-3,-1};
int chiave;
int result;
printf("Inserisci un valore\n");
scanf ("%d", &chiave);
result=trova (vett, MAX_DIM , chiave);
if(result==-1)
printf("Numero %d non trovato\n",chiave);
else
printf("Numero %d trovato\n",chiave);
return 0;
}
int trova(const int a[], unsigned int n, int x)
{
static int i=0;
if (i>(n-1))
return -1;
if (x==a[i])
return 1;
i++;
return trova(a,n,x);
}