Besoin d'aide pour la Récursivité

Résolu
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 18 mai 2006 à 11:09
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 24 mai 2006 à 10:04
Bonjour tout le monde


Je suis en trein de m'amuser à faire un petit convertisseur euro.


Voici mon code de la class Calcul.

J'éprouve quel que difficulté, avec la récurcivité.



import java.awt.*;
import javax.swing.*;
import java.awt.event.*;



public class Calcul



{



public float somme;



public Calcul()
{



String convert="";



float resultat=0,somme=0, taux=6.56f;



Boolean franc = false;



Boolean eurro =true;



if(franc==true)



{



eurro=false;



}



else if(eurro==true)
{



franc = false;



}
if(convert.equals("Convertir") && franc ==true)
{





resultat=somme * taux;



return resultat;
}



else if(convert.equals("Convertir") && eurro==true)



{





resultat=(somme / taux);



return resultat;



}



else if(convert.equals("Convertir") && eurro==true && franc == true)
{



JOptionPane.showMessageDialog(null,"Vous ne vous pouvez pas selectionner les deux options en même temps.");




 



}

return (0);
}



}

voici l'erreur.

Calcul.java:59: cannot return a value from method whose result type is void
return resultat;
       ^
Calcul.java:69: cannot return a value from method whose result type is void
return resultat;
       ^
Calcul.java:84: cannot return a value from method whose result type is void
return (0);
       ^
3 errors


Merci

Cordialement

A bientôt

6 réponses

HSylvio Messages postés 116 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 14 juin 2012
24 mai 2006 à 09:58
Ben disons que là ca sert à rien parce que une conversion n'est jamais qu'une opération : * 6.5 ou / 6.5.
L'objectif de la récursivité est, comme dans l'exemple de la factorielle, de faire des opérations successives qui agissent en fonction des paramètres mais utilisant le même fonction.

Cherches des informations sur les tours de hanoï ca devrai bien te montrer a quoi ca sert et comment l'utiliser.
Ici tu veux renvoyer un résultat directement, et pour reprendre un peu ton code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Calcul
{
public float somme;

public Calcul() // c'est le constructeur, ce qui est lancé quand tu fais Calcul c = new Calcul();
{

String convert="";

float resultat=0,somme=0, taux=6.56f;

Boolean franc = false;

Boolean eurro =true;

if(franc==true)// ce if else ne sert a rien car tu as ici toujours franc false et eurro true a cause des 2 lignes ci-dessus

{

eurro=false;

}

else if(eurro==true)
{

franc = false;

}

// ça il faut que tu le mette dans une fonction, qui renvoie un float; tu pourras appeler cette fonction en faisant

// par exemple   c.convertis(0.2,  true)


// } fin du constructeur

//public float convertis(float somme, bool franc){

if(/*convert.equals("Convertir") && */franc ==true)

{

resultat=somme * taux;

return resultat;
}

else  // if(convert.equals("Convertir") && eurro==true)

{

resultat=(somme / taux);

return resultat;

}

else if(convert.equals("Convertir") && eurro==true && franc == true)

// tu peux enlever ca en envoyant un seul parametre (bool franc) et interdir de selectionner les deux monnaies dans //l'interface graphique
{

JOptionPane.showMessageDialog(null,"Vous ne vous pouvez pas selectionner les deux options en même temps.");

 

}
return (0);
}

}

Voila j'espere que tu as compris, tu crées une instance de calcul appelée calc en faisant Calcul calc = new Calcul();
tu calcules ensuite une conversion en faisant float resultat = calc.convertis(float valeur, bool franc);

La recursivite c'est autre chose; cherches les tours de hanoï ou peut être la division euclidienne estt plus simple.
3
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
18 mai 2006 à 11:24
1 : dans un constructeur on renvoit pas de valeur
2 : je vois pas la récursivité

++
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
18 mai 2006 à 11:42
re

Que voulez vous dire par

: dans un constructeur on renvoit pas de valeur

On m'a explique qui c'est ca la recusivité

if(convert.equals("Convertir") && franc ==true)
{
resultat=somme * taux;return resultat;
}

else if(convert.equals("Convertir") && eurro==true)

{
resultat=(somme / taux);

return resultat;

}

a+
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
18 mai 2006 à 11:50
public class maClasse
{
    int a;
    int b;
    maClasse()
    {
       a=0;
       b=0;
};

Le constructeur sert uniquement à initialiser les membres de la classe.
Dans ton programme tu n'a pas besoin de récursivité : la récursivité c'est une fonction qui s'appelle elle meme pour resoudre un problème
exemple
double factorielle(int n)
{
    if(n<=1)
       return 1;
    else
       return n*factorielle(n-1);
}

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
18 mai 2006 à 13:48
Re

Donc, là je ne peux pas faire de récursivité

A+
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
24 mai 2006 à 10:04
Bonjour tout le monde

Merci pous ces précisions.

Cordialement

A bientôt
0
Rejoignez-nous