"Scrivere in C una funzione RICORSIVA che
• legga da linea di comando (senza memorizzarla) una sequenza di interi positivi che termina appena entra 0 e che
• restituisca il numero di interi che sono preceduti da un elemento di valore triplo.
Ad esempio, se la sequenza fosse 3 7 2 6 2 9 2 8 7 36 12 4 0, la funzione dovrebbe restituire 3."
Io sono riuscito a farlo nel modo che riporto qui sotto. Volevo sapere se secondo voi può andar bene.
In esercizi di questo genere sulla ricorsione, il mio problema è capire come inserire un "passo base" e poi il richiamo della funzione stessa.
In questo esercizio ci son riuscito solo leggendo il primo numero della sequenza dal main e passarlo poi alla funzione...magari c'è un modo per scrivere il programma con una funzione dal prototipo "int funzione()" e leggere tutti i numeri della sequenza nella funzione stessa. Non so se mi son spiegato bene
- Codice:
#include <stdio.h>
int funzione(int n){
int m;
if(n==0) return 0;
else{
scanf("%d",&m);
if(n!=m*3){
return funzione(m);
}
else return 1+funzione(m);
}
}
int main() {
int n;
scanf("%d",&n);
printf("Il numero di interi è:%d\n",funzione(n));
return 0;
}