CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Recursivité Java

thewind04
thewind04
Niveau 4
24 juin 2020 à 14:04:38

Bonjour à tous,

je m'exerce en ce moment sur des petits exercices de récursivité en java mais je bloque sur un en particulier :(
Voici l'énoncer : écrire une fonction récursive qui retourne la somme des chiffres impairs d'un nombre
exemple avec 125 : ça doit donc retourner 6

Voici ce que j'ai fait :
https://image.noelshack.com/fichiers/2020/26/3/1593000237-capture.png

voila j ai laisser les coms pour expliquer un peu le code , si quelqu'un peut m'aider :merci:

thewind04
thewind04
Niveau 4
24 juin 2020 à 14:18:41

1ere constatation d'erreur : ligne 6 c'est pas val%10 mais val/10 qu'il faut prendre
cependant ca ne fonctionne tjs pas

_S0uL
_S0uL
Niveau 9
24 juin 2020 à 14:25:23

Ton return par défaut n'est pas bon. Ça ne peut pas marcher, dans ton appel le plus haut (dans ce cas) tu va faire un return de 125 + le resultat de sommeImpaire(12).

Ta fonction devrait ressembler à ça :

Si val < 10 {
  return val * (impaire?) // * 1 si impaire sinon * 0
}
return (val % 10) * (impaire?) + appel récursif

impaire? renvoir 1 si impaire sinon 0.

Message édité le 24 juin 2020 à 14:28:50 par _S0uL
cybevil
cybevil
Niveau 27
24 juin 2020 à 14:51:03

Tu peux le faire avec des conversions de string aussi :

package test;

public class Main {

	public static boolean isPair(int number) {
		if (number % 2 == 0) {
			return true;
		}
		return false;
	}

	public static int sommeImpair(int number) {
		int somme = 0;
		String tmp = ((Integer) number).toString();

		for (int i = 0; i < tmp.length(); i++) {

			if (!isPair(Character.getNumericValue(tmp.charAt(i)))) {
				somme += Character.getNumericValue(tmp.charAt(i));
			}
		}

		return somme;
	}

	public static void main(String[] args) {

		System.out.println(sommeImpair(523));
	}
}

Message édité le 24 juin 2020 à 14:52:40 par cybevil
Choucador
Choucador
Niveau 10
24 juin 2020 à 15:18:21

Le 24 juin 2020 à 14:18:41 TheWind04 a écrit :
1ere constatation d'erreur : ligne 6 c'est pas val%10 mais val/10 qu'il faut prendre
cependant ca ne fonctionne tjs pas

Non c'est bien val%10
Il faut juste remplacer "val" par "val%10" ligne 8 et ça devrait être bon

Edit: il te manque aussi le cas où val < 10 et val%2==0

Message édité le 24 juin 2020 à 15:19:58 par Choucador
[Black_Spirit]
[Black_Spirit]
Niveau 19
24 juin 2020 à 15:35:34

Pour la lisibilité tu peux aussi "simplifier" ton cas de sorti et mettre :


if (input == 0) 
        return 0;

En effet, la somme des nombres impairs de 0 est toujours 0.

thewind04
thewind04
Niveau 4
24 juin 2020 à 15:40:34

ok merci tous le monde je comprends mieux :ok:

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment