12/12/2018, 23:45
Quindi il problema nel primo codice è che la funzione ricorsiva ritornava true(1) o false(0)?
Per quanto riguarda il tuo codice non capisco il passaggio if(n)...
...e poi il return (n>0)==ric(). La tua logica credo sia diversa dal contare "i segni meno" della sequenza.
Ma il mio metodo è proprio da buttare? Se volessi fare una funzione ricorsiva che mi conti i negativi e poi controlli che la somma sia pari o dispari?
13/12/2018, 00:10
1 0
, controlla se ottieni il risultato corretto e in caso contrario cerca di capire dov'è che le cose vanno male e perché.
13/12/2018, 09:34
#include <stdio.h>
int ric()
{
int n;
scanf("%d", &n);
if(n==0) return 1;
else{
if(n<0) return -1*ric();
else return 1*ric();
}
}
int main()
{
if(ric()==1) printf("TRUE");
else printf("FALSE");
return 0;
}
13/12/2018, 10:17
13/12/2018, 13:50
int ric()
{
//salto un attimo tutte le dichiarazioni che servono
if(n==0) return 0;
else{
if(n<0)
{
neg=1+ric();
if(neg%2==0) return 0;
else return -1;
}
else return ric();
}
}
13/12/2018, 14:54
nick_10 ha scritto:Nel frattempo ci ho riprovato di nuovo. Butto qui solo un'idea dato che ancora non lo provo
13/12/2018, 20:32
13/12/2018, 21:52
13/12/2018, 23:27
#include <stdio.h>
#include <stdbool.h>
bool ric()
{
int n;
scanf("%d", &n);
if (n == 0)
return true;
else
{
if (n < 0)
return !ric();
else
return ric();
}
}
int main()
{
if (ric() == true)
printf("Prodotto positivo");
else
printf("Prodotto negativo");
return 0;
}
stdbool.h
è parte dello standard C99, quindi dovresti poterlo usare senza problemi. All'atto pratico definisce delle macro per bool
, true
e false
, niente di più.
13/12/2018, 23:32
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.
Powered by phpBB © phpBB Group - Privacy policy - Cookie privacy
phpBB Mobile / SEO by Artodia.