bonjour à tous je suis nouveau sur le forum et j'ai un petit soucis...
j'ai codé une fonction qui doit me retourner la racine du nombre donné en argument. ça marche quasiment sauf le moment ou la fonction test retourne la variable:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
 
float test(float min, float max, float nb)
{
    float mid;
    float resultat;
 
    mid=(max+min)/2;
    resultat=mid*mid;
 
    printf("min:%.2f\t mid:%.2f\tmax:%.2f\n",min,mid,max);
    //system("pause");
 
    if(resultat<nb)
    min=mid;
    else if(resultat>nb)
    max=mid;
    else
    {
        printf("RESULTAT: %f\n",mid);
        return mid;
    }
 
 
    test(min,max,nb);
}
 
float racine(float nb)
{
    if(nb==0)
    return 0;
    float max=nb;
    float min=0;
    float resultat = test(min,max,nb);
    printf("RESULTAT: %f\n",resultat);
    return resultat;
}
 
int main()
{
    float nb=1;
    if(nb<0)
    {printf("nb est negatif!\n");
    exit(EXIT_FAILURE);}
 
    printf("la racine de %.2f est: %.2f",nb,racine(nb));
}
avec les printf j'obtiens:

RESULTAT: 1.000000
RESULTAT: 1.#QNAN0
la racine de 1 est 1.#R

Voila, je comprend pas comment le premier peut être correct et le second faux... si quelqu'un peut m'éclairer

merci!