Initiation à la récursivitée

developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 8 mai 2006 à 10:19
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 9 mai 2006 à 20:45
Bonjour tout le monde

Je suis entrin de faire un projet de prêt banquaire

Avec affichage dans un tableau des prélèvements prévue pour le rembourcement

Je souhaite faire le calcul en recursivité.

Voici le codee

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



public class Calcul
{





public Calcul()


{


}



public float pret()


{


String somme,riendanssommdemande;
float taux;
int sommedemande,totaldue,temps,moi;





taux=0;


riendanssommdemande = Integer.toString(sommedemande);



moi=12*temps;





if(somme.equals("somme"))
{
if(riendanssommdemande ==""||taux ==0)
{



JOptionPane.showMessageDialog(null,"Formulaire incomplet");



}


else
{

return pret (sommedemande*taux/100) + sommedemande;


}
}


}


public int affichetable()



{



}


public void main(String[] args)
{


}



}

Voici l'erreur pour le moment que j'ai

C:\Documents and Settings\vincent1\Bureau\banque>javac Calcul.java
Calcul.java:56: pret() in Calcul cannot be applied to (float)
return pret (sommedemande*taux/100) + sommedemande;
^
Calcul.java:56: operator + cannot be applied to pret,int
return pret (sommedemande*taux/100) + sommedemande;
^
Calcul.java:56: incompatible types
found : <nulltype>
required: float
return pret (sommedemande*taux/100) + sommedemande;
^
3 errors

Mon probleme aussi est de passer au calcul suivant

de tranferer le resultat dans une variable totaldue multiplier par temps et à chaque années on ajoute le taux comme pour les prêt banquaire.

Pouvez vous m'aider

Merci

Cordialement

A bientôt

13 réponses

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
8 mai 2006 à 11:13
heu deja premiere erreur :
if(riendanssommdemande ==""||taux ==0)

on ne compare pas un String avec == mais avec .equals() ou avec .compareTo()

la seconde celle qui te cause des erreur est :
public float pret()

ta methode ne prend pas d'argument ...

il y a pas mal d'exemple de recursivite sur ce site si jamais ta vraiment du mal...
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
8 mai 2006 à 19:28
Bonsoir tout le monde

J'ai mis if(riendanssommdemande.equals("")||taux ==0)

Vous voulez qu'il ne faut pas mêttre public foat pour la récursivité.

Merci

Cordialement

A bientôt
0
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
8 mai 2006 à 19:40
Non
Ce qu'il faut, c'est que ta méthode prenne au moins un paramètre pour faire de 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
8 mai 2006 à 20:02
Rebonsoir tout le monde

Vous voulez dire que je dois initialiser les variables.

Merci

Cordialement

A bientôt
0

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

Posez votre question
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
8 mai 2006 à 21:06
lol mais sias tu ce qu'est la recursivite ?

va voir mon code => suppirmer un fichier et tu va voir a quoi sa ressemble
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
8 mai 2006 à 21:45
Rebonsoir tout le monde

Je m'excuse je m'initi à la récurcivité.

Quel code?

Merci

Cordialement

A bientôt
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
8 mai 2006 à 21:49
alala

la recursivite pour faire simple est une methode qui s'appel elle meme
elle permet d'executer une meme action sur des donnees qui change jusqua ce qu'il n'y en ai plus par exemple un listage de tout les fichier du disque dur ou d'un repertoire donc dans ta methode tu dois avoir un parametre sur lequel tu va le travailler , modifier et a la fin de la methode le repasser
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
8 mai 2006 à 22:20
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
9 mai 2006 à 16:46
Bonjour tout le monde

J'ai un peu avancé, mai j'ai pas terminée.

Voici le code:

public float pret()


{


String somme="",riendanssommdemande;
float taux,sommetotal;
int sommedemande=0,totaldue,temps=0,moi;


taux=0;


riendanssommdemande = Integer.toString(sommedemande);

moi=12*temps;





if(somme.equals("somme"))
{
if(riendanssommdemande.equals("")||taux ==0)
{



JOptionPane.showMessageDialog(null,"Formulaire incomplet");



}


else
{




return (totaldue=(int)(sommedemande*taux/100) + (int)sommedemande);
return (sommetotal=(totaldue*moi));




}
}



return(0);


}

Voici l'erreur:

Calcul.java:51: unreachable statement
return (sommetotal=(totaldue*moi));
^
1 error

Je ne comprend pas cette erreur, j'ai essayé de voire dans mon disctionnaire anglais ce qu'elle voulait.

Mai ce mot n y ai pas.

Pourriez vous me dire quel est l'erreur.

Merci

Cordialement

A bientôt
0
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
9 mai 2006 à 17:10
Seul le 1er return va être executé donc le 2e ne sert à rien
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
9 mai 2006 à 17:33
Rebonjour tout le monde

Si, j'ai bien compris on ne m'ai que return qu'une fois pour lancer là récursivité.

voici le code actuel pour la récursivité:

return (totaldue=(int)(sommedemande*taux/100) + (int)sommedemande);
(sommetotal=(totaldue*moi));

Voici l'erreur qu'il me sort maintenant

Calcul.java:51: not a statement
(sommetotal=(totaldue*moi));
^
1 error

J'ai l'impretion qu'il me demande une initialisation

Elle est déja faite.

sommtotal=0;

D'où vient le probleme.

Merci.

Cordialement

A bientôt
0
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
9 mai 2006 à 18:38
J'ai l'impression que tu ne comprends pas ce qu'est la récursivité. Voici un exemple :
...
int factDe5 = fact(5);
...
int fact(int i) {
return i * fact(i-1);
}

mais cet exemple n'est pas récursif terminal donc voici un autre exemple ;
...
int factDe5 = fact(5, 1);
...
int fact(int i, int j) {
if(i == 0)
return j;
return fact(i - 1, j * i);
}

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

Question, notre enseignant nous a pas spécifié les types d'opérateur qu'on a pour la récursivité.

c'est vai, que je doute sur ce que je sais.

Cordialement

A bientôt
0
Rejoignez-nous