IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Besoin d'aide pour suite de Fibonacci ! [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut Besoin d'aide pour suite de Fibonacci !
    Bonjour les amis !

    Je suis nouveau sur le forum mais aussi dans la programmation. J'ai débuté il y a une semaine soyez indulgent. Merci ^^

    J'apprends en autodidacte, et avec un de mes amis, développeur professionnel. Il m'a soumis l'exercice de coder un programme qui donnerait les 10 premiers nombres de la suite de Fibonacci (bien sûr sans aller recopié la solution bêtement sur le net ), en premier lieu de façon recursive et ensuite itérative.

    Alors mathématiquement parlant, j'ai très bien compris le principe, mais le retranscrire en code me semble une montagne !

    Voici ce que j'ai produit pour le moment pour la façon recursive qui me bloque pour le moment :

    Nom : SuiteFibo.jpg
Affichages : 3224
Taille : 235,2 Ko

    Alors ma logique est :

    - je déclare une fonction "suiteFibonacci" qui comprend la valeur "a" de type entier
    - si "a" est égale à 1, alors j'incrémente 1 à "a"
    - je retourne donc "a" + "la fonction en elle même" afin d'avoir la suite de Fibonacci
    - dans "main" je reprend la fonction que j'affiche via un "Console.WriteLine"

    Biensûr, ça ne marche pas. Je ne sais pas si je suis sur la bonne voie ou pas et ce que je fais de mal?

    Votre aide sera la bienvenue !

  2. #2
    Membre Expert
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 661
    Par défaut
    Bonjour,

    Déjà, bienvenu sur le forum .

    Ensuite, n'hésite pas a utiliser les balises pour le code, au lieu d'un screenshot, ça nous permet de travailler directement ton code et de mieux t'aider.

    Du coup, plusieurs problèmes :

    • Ta variable a n'est pas déclarée dans sa portée, elle n'existe que en tant que référence dans la méthode. Il te faut donc rajouter un int a = 0; avant l'appel de la méthode.
    • Ta fonction récursive n'a pas de limite, elle va donc boucler indéfiniment.
    • Le Console.WriteLine() est un peu mal utilisé ici, il faudrait mieux l'intégrer dans la méthode elle-même, sinon tu devras stocker les différents nombres et ensuite les afficher.


    Pour te rassurer un peu, tu n'es pas trop loin, la suite de Fibonacci ce n'est pas très compliquée mais tu pourras voir comme ça tout le principe de la récursivité .

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut
    Bonjour PixelJuice !

    Merci beaucoup pour ton aide !

    Ok, je ne savais pas qu'on pouvais intégrer le code en mode "retouche", c'est trop cool !

    Alors voici mes corrections :

    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
     
    using System;
     
    namespace GameNumber
    {
        class Program
        {
            static void Main(string[] args)
            {
     
            }
     
            public static int suiteFibonacci(int a)
            {
                a = 0;
     
                if (a == 1)
                {
                    return 1;
                }
                else
                Console.WriteLine($"{suiteFibonacci(a)}");
                return a = suiteFibonacci(a-1) + suiteFibonacci(a-2); 
            }
        }   
    }
    Mais ça ne marche toujours pas xD

    Honnêtement mon soucis viens plus du fait que je tâtonne pour trouver la solution. Plutôt que de comprendre précisément ce qu'il ne va pas et régler le problème une fois pour toute.

    Je sais pas ce qu'il me manque pour passer ce cap et devenir efficace quand je code, j'entends par là avoir tout de suite les bons réflexes en fonction de ce qu'on me demande?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    tu peux faire de l'exécution pas à pas pour comprendre ce qu'il se passe
    au lieu de F5 qui démarre tu fais F11, une ligne jaune va apparaître te montrant où il est en et avancer d'un cran à chaque F11
    quand c'est en pause comme ca tu peux mettre la souris sur une variable pour voir son contenu

    tu devrais vite comprendre comment corriger
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut
    Bonjour Pol63 !

    Merci pour ton astuce elle m'aide vraiment bien !

    Mais malgré ça j'avoue que je bloque là :/

    Voici mes dernières modifs, mais j'ai l'impression que je m'éloigne (ps: j'ai comme info sur la console "Stack Overflow") :

    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
     
    namespace GameNumber
    {
        class Program
        {
     
            static void Main(string[] args)
            {
                int a = 0;
                suiteFibonacci(a);
                Console.WriteLine($"{suiteFibonacci(a)}");
            }
            public static int suiteFibonacci(int a)
            {
                a = 0;
     
                if (a == 1)
                {
                    return 1;
                }
     
                if (a > 1 && a < 56)
                {
                    a = suiteFibonacci(a - 1) + suiteFibonacci(a - 2);
                }
     
                return a;
            }
        }   
    }
    En fait dans "a = suiteFibonacci(a - 1) + suiteFibonacci(a - 2);" je fais -1 et -2, sur "a" qui est à 0, donc je comprends pas trop comment ça peut marcher.

    De même dans le "main" je déclare "a = 0", donc forcément ma fonction sera à 0 non?

    En tout cas, d'après mes vérifs avec F11, c'est le cas. "a" est égal à 0 partout xD

    il faudrait que je créer une intervalle dans laquelle la variable "a" va pouvoir croître et pour ça je doit incrémenté "a" (le fameux"++")?

    Je suis perdu !

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut
    Je penses me rapprocher de la solution.

    Seul problème, dans "main", il me demande d'assigner "int a". Sauf que si je sais pas à quelle valeur je dois l'assigner?

    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
     
    namespace GameNumber
    {
        class Program
        {
     
            static void Main(string[] args)
            {
                int a;
                suiteFibonacci(a);
                Console.WriteLine($"{suiteFibonacci(a)}");
            }
            public static int suiteFibonacci(int a)
            {
     
                if (a == 1)
                {
                    return 1;
                }
                else
     
                return suiteFibonacci(a-1) + suiteFibonacci(a-2);
            }
        }   
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/11/2017, 16h22
  2. Besoin d'aide pour une suite arithmétique!
    Par Gdelia dans le forum Général Python
    Réponses: 6
    Dernier message: 22/11/2013, 23h39
  3. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 19h01
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 10h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 17h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo