[C] Funzione ricorsiva

Messaggioda nick_10 » 18/11/2018, 11:36

Ciao a tutti! Devo risolvere questo esercizio:
Scrivere una funzione ricorsiva C che,
• preso in ingresso un intero positivo k,
• legga da linea di comando (senza memorizzarla) una sequenza di interi positivi che termina quando la somma dei valori immessi supera strettamente k (l’ultimo numero non fa parte della sequenza), e
• restituisca il numero di interi immessi.
Io ho provato a scrivere questo:
Codice:
int contaric(int k){
    int n;
    scanf("%d",&n);
    if(n>k) return 1;
    else return 1+contaric(k-n);
}

Il problema è che conta anche l'ultimo numero immesso che non dovrebbe far parte della sequenza. Come posso migliorarlo?
nick_10
Average Member
Average Member
 
Messaggio: 324 di 754
Iscritto il: 17/11/2016, 16:21

Re: [C] Funzione ricorsiva

Messaggioda Super Squirrel » 18/11/2018, 13:13

Con if(n>k) return 1;, sei tu che gli stai dicendo di contare anche l'inserimento che determina il superamento di k.
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 310 di 1486
Iscritto il: 16/05/2013, 22:05

Re: [C] Funzione ricorsiva

Messaggioda nick_10 » 18/11/2018, 14:16

Grazie mi vergogno quasi per la svista...bastava un return 0
Grazie mille :)
nick_10
Average Member
Average Member
 
Messaggio: 325 di 754
Iscritto il: 17/11/2016, 16:21


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite