NaN da eliminare

di il
6 risposte

NaN da eliminare

Ciao a tutti, non riesco a capire per quale motivo il risultato di un'operazione che faccio è "nan"
float produttoria(int *a, int dim){
    float risultato;
    if (dim == 0) return 1;
    else{
        risultato = risultato * finto_fibo(a[dim-1]) * produttoria(a, dim-1);
    }
    return risultato;
}
produttoria è ricorsiva e finto_fibo invece l'ho creata sopra e fa questo: (finto_fibo funziona)
float finto_fibo(float n){
    float f1 = 1;
    float fn;
    if (n==f1) return 1;
    for (float i = 2; i<=n; i++){
        fn = (i+1)/f1;
        f1 = fn;
    }
    return fn;
}
in pratica return risultato mi da nan e non capisco perché.
Grazie

6 Risposte

  • Re: NaN da eliminare

    Secondo te quanto vale risultato appena prima di moltiplicarlo?
  • Re: NaN da eliminare

    Ciao si nel mentre ho fatto altre prove e ho notato che risultato vale 0 di default, giusto? quindi l'ho inizializzato io a 1 (elemento neutro della moltiplicazione) e funziona, anche se arrotonda il risultato ma vabe, ad esempio con determinati numeri mi dovrebbe dare 14.9 periodico ma mi da 15.. mi accontento
  • Re: NaN da eliminare

    Ma 14.9 periodico è proprio uguale a 15, direi no problema
  • Re: NaN da eliminare

    alchimista ha scritto:


    Ciao si nel mentre ho fatto altre prove e ho notato che risultato vale 0 di default, giusto?
    No anzi, di default è molto probabile che sia un NaN. Il valore iniziale è undefined. Le variabili globali hanno default a zero
  • Re: NaN da eliminare

    Quando arrivi qui, che valore hanno tutte le variabili? anche al primo giro? [CODE] risultato = risultato * finto_fibo(a[dim-1]) * produttoria(a, dim-1); poi cercherò di capire cosa vuole dire NaN, lo so che vuole dire non a number, ma se non ricordo male un float o un intero sono una sequenza di byte, vorrei capire quale sequenza è NaN.

    questa funzione da dove viene chiamata?
  • Re: NaN da eliminare

    Non un intero ma un float. Un float deve rispettare un preciso standard.

    https://it.wikipedia.org/wiki/Na
Devi accedere o registrarti per scrivere nel forum
6 risposte