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 :

mini-exercice court sur la récursivité


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 22
    Points : 0
    Points
    0
    Par défaut mini-exercice court sur la récursivité
    Bonjour, je dois écire en C une fonction somme qui calcule et renvoie à l'apelant la valeur de 1+1/2+1/3+1/4+...
    1)déterminer la réccurence mathématique qui définit cette somme.
    2)écrire en C la fonction somme sous forme récursive, le paramètre fourni étant le nombre de termes de la somme à calculer
    3)écrire en C les quelques lignes permettant d'appeler la fonction somme, de récupérer le résultat et de l'afficher.

    Quelqu'un pourrait t'il me dnner la correction? il est tiré d'un livre, et selon ce dernier, il est facile, mais je n'arrive pas à le faire.
    Je vous remercie par avance.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Bonjour, non, nous ne pouvons pas.
    C'est explicitement interdit par la charte que nous avons tous accepté en nous inscrivant sur le forum.
    article IV-N
    IV-N. Lycéen, collégien, étudiant, (bref un apprenti développeur)


    Vous êtes les bienvenus ici pour vous former.

    Vous former, cela veut dire lire les cours et tutoriels :
    http://www.developpez.com/cours/

    et éventuellement poser vos questions en français correct si vous avez besoin d'aide, dans un seul forum, et dans le respect des règles du forum.

    Nous ne sommes pas là pour faire vos exercices.
    Entendez par là que nous serons bien évidemment tout à fait d'accord pour vous aider à résoudre votre problème, pour autant que vous fassiez vous-même des efforts.
    Postez votre question, mais proposez également un début de solution, un bout de code, etc. En aucun cas, nous ne ferons le travail à votre place.

    Merci de votre compréhension.

    PS : Merci aux étudiants qui participent à developpez.com en écrivant des tutoriels ou en répondant aux messages des autres sur des sujets qu'ils maîtrisent bien.
    Par contre, nous pouvons t'aider à la trouver.
    Comment comprends-tu le problème?
    La première question n'est pas liée au code, mais à la programmation elle-même: c'est l'analyse du problème. Comment y réponds-tu?

    PS: ce n'est pas moi qui aie
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 22
    Points : 0
    Points
    0
    Par défaut
    1)
    S=Somme(1/n)

    Pourriez-vous m'aider à le corriger, je sais que c'est simple mais j'arrive vraiment pas à le faire, de plus dans 2 heures j'aurai un controle sur ce type d'exercice.
    Je vous remercie par avance

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Bonjour,
    Citation Envoyé par couturierclaire Voir le message
    1)
    S=Somme(1/n)

    Pourriez-vous m'aider à le corriger, je sais que c'est simple mais j'arrive vraiment pas à le faire, de plus dans 2 heures j'aurai un controle sur ce type d'exercice.
    Je vous remercie par avance
    C'est tout ce que tu as trouvé pour nous faire croire que tu as bossé dessus ?

    developpez.net n'est pas synonyme de On-fait-tes-devoirs-à-ta-place.gratuit.
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Aller, je te mets sur la voie:
    1)déterminer la réccurence mathématique qui définit cette somme.
    deux noms dans la question, récurrence et somme.
    Tu nous a donné une expression analytique de la somme: s = somme i=1 .. ? {1/i}.
    Pour être plus précis, c'est l'expression de Sn.

    Que signifie récurrence (en mathématique)?
    Quelle est donc la définition par récurrence de cette somme?

    Pour information, en termes mathématiques, on parlerait de somme des termes d'une suite, donc de série.

    Préparation à la question 2):
    écrire en C la fonction somme sous forme récursive, le paramètre fourni étant le nombre de termes de la somme à calculer
    Qu'appelle-t-on une fonction récursive en programmation?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 369
    Points : 23 623
    Points
    23 623
    Par défaut
    Citation Envoyé par couturierclaire Voir le message
    Quelqu'un pourrait t'il me dnner la correction? il est tiré d'un livre, et selon ce dernier, il est facile, mais je n'arrive pas à le faire.
    Je vous remercie par avance.
    Comprenons-nous bien : disposer de la correction d'un exercice que l'on cherche à faire, c'est effectivement appréciable… quand on travaille dessus ! Donc, le problème est toujours le même : on peut t'orienter, on peut même corriger ton travail, à condition que tu commences par nous montrer ce que tu as écrit sur le sujet en question. Chose que tu avais commencé à faire dans tes discussions précédentes, d'ailleurs.

    Citation Envoyé par couturierclaire Voir le message
    1)
    S=Somme(1/n)

    Pourriez-vous m'aider à le corriger, je sais que c'est simple mais j'arrive vraiment pas à le faire, de plus dans 2 heures j'aurai un controle sur ce type d'exercice.
    Je vous remercie par avance
    Tu réalises bien que te donner la solution toute faite ne te sera d'aucun secours dans ce cas précis : tu vas effectivement la regarder, mais tu ne pourras pas t'y référer pendant l'examen. Donc, si tu n'as pas compris comment cela fonctionne, tu vas échouer à nouveau.

    Au passage, leternel t'a mis sur la bonne voie en te posant les bonnes questions :
    Citation Envoyé par leternel
    — Que signifie récurrence (en mathématique) ?
    — Quelle est donc la définition par récurrence de cette somme ?
    — Qu'appelle-t-on une fonction récursive en programmation ?
    Peux-tu nous donner dans ce fil ta propre définition de ces notions et la meilleure réponse à apporter, selon toi, à ces trois questions ?
    Dès lors que ceci sera clair, le reste du code te viendra naturellement.

  7. #7
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Qu'appelle-t-on une fonction récursive en programmation?
    Aïe, aïe aïe. Je crois que tu as mis le pied sur une mine. Car entre la récursivité, la récursivité terminale, la simple itération, etc, je ne crois pas que tout le monde soit d'accord sur ce qu'est la récursion.
    Par exemple, la récursivité nécessite-t-elle toujours une pile ? Une boucle étant un bout de code qui s'appelle lui-même, est-elle récursive ? ...
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  8. #8
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Une fonction est récursive lorsqu'elle possède une propriété. C'est précisément la même qu'utilisé pour dire en mathématique qu'une définition est faite "par récurrence".
    Au dela, c'est du détail de code, de langage et (d'opportunités) d'optimisation.

    La réponse est immédiatement trouvable sur internet, mais il s'agit avant tout de la comprendre.


    Citation Envoyé par Floderab
    Par exemple, la récursivité nécessite-t-elle toujours une pile ? Une boucle étant un bout de code qui s'appelle lui-même, est-elle récursive ? ...
    Ces remarques sont completement hors de propos.
    La première ne concerne que les compilateurs (et interpréteurs), et la seconde ne parle pas d'une fonction.

    La réponse de base à la seconde question est "non" car ni la boucle entière ni sont corps ne sont récursif.
    Je n'en dirai pas plus tant que notre poseur de question n'aura pas répondu, car ca impliquerait de donner les réponses
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  9. #9
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Une fonction est récursive lorsqu'elle possède une propriété.
    C'est un peu court, jeune homme.
    Je ne comprends pas cette définition.
    Est-ce que tu confonds récurrence et récursivité ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  10. #10
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    réponse par MP, pour ne pas gacher la question.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  11. #11
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,

    la notion de «fonction récursive» en programmation est simple. Pour les langages qui le permettent, une fonction est récursive si dans la définition de la fonction se trouve un appel à la fonction elle-même. Il n'y a rien à dire de plus sur la récursion simple dans ce cas.

  12. #12
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Aïe, aïe aïe. Je crois que tu as mis le pied sur une mine. Car entre la récursivité, la récursivité terminale, la simple itération, etc, je ne crois pas que tout le monde soit d'accord sur ce qu'est la récursion.
    Par exemple, la récursivité nécessite-t-elle toujours une pile ? Une boucle étant un bout de code qui s'appelle lui-même, est-elle récursive ? ...
    ça me rappelle une discussion récente en effet en revanche - de mon coté en tous cas - c'est un peu plus clair désormais justement, on va dissocier la récursivité "apparente" d'une fonction, la façon dont elle est écrite dans le langage de haut niveau qu'on veut, de la récursivité concrète au niveau du code machine qui elle implique obligatoirement une pile

    une fonction peut avoir l'air récursive et être à l'arrivée traduite en itération par le compilateur, dans ce cas concrètement le code généré n'est pas récursif, mais dire que la fonction est récursive au moins de par son aspect ne me fait pas peur, c'est probablement un abus de langage, mais dont je m’accommode facilement on va dire

    on pourrait sans doute parler de "l'écriture récursive d'une fonction" dans un cas et bien de "récursivité de la fonction" dans l'autre

    edit:
    Citation Envoyé par leternel Voir le message
    réponse par MP, pour ne pas gacher la question.
    ben ça en revanche c'est dommage, ça fait 10 jours que couturierclaire crée des topics en demandant qu'on lui fasse ses exercices et sans jamais répondre à ceux qui tentent de l'aider, de mon point de vue le seul intérêt de ce thread vient justement de la discussion en périphérie entre nous

  13. #13
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par couturierclaire Voir le message
    ...de plus dans 2 heures j'aurai un controle sur ce type d'exercice.
    Hey, bonne chance !!!

    Citation Envoyé par droggo Voir le message
    developpez.net n'est pas synonyme de On-fait-tes-devoirs-à-ta-place.gratuit.
    Non mais peut-être que On-fait-tes-devoirs-à-ta-place.tres_cher pourrait être...

    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #14
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Maintenant que le contrôle est passé, on peut jouer un peu plus.

    récursion, récurrence et récursivité.

    récursivité est un nom, qui désigne l'état de ce qui est récursif.
    récursion est aussi un nom, et désigne l'action qui rend un comportement récursif.

    récurrence est encore un nom et désigne quelque chose de répétitif mais pas forcément régulier.
    Par exemple, le lever du jour, la grêve de la ratp le jour du bac de philo, la pluie, la neige, ou les demandes de corrections d'exercice sur notre forum.
    Avec un phénomène récurrent, on a toujours un petit côté "déjà vu"

    En mathématique, une définition est faite par récurrence quand elle donne une définition primitive et une manière de créer un nouvel élément.
    Par exemple, voici une définition par récurrence des entiers:
    Il existe un entier 0 élément neutre de l'opération d'addition dans l'ensemble des entiers.
    il existe un second entier, l'unité, noté 1.
    Si i est un entier, i+1 est aussi un entier.
    Elle n'est pas exactement complète, il manque une explication de +, mais ca donne l'idée.

    En programmation, une fonction est récursive dès lors qu'elle s'appelle elle-même.
    On parle de récursion indirecte s'il y a une cycle dans une chaine d'appel de fonction.

    Plus concrêtement, une fonction est récursive dès lors qu'elle est appelée par sa définition.
    Exactement comme une formule mathématique est récursive dès lors qu'elle est utilisée par sa définition.

    Exemple de formule récursive: Sn = Sn-1 + 1/n
    Exemple de fonction récursive: int f(int i) { return (i > 1) ? i*f(i-1) : i;}
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  15. #15
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Hey, bonne chance !!!


    Non mais peut-être que On-fait-tes-devoirs-à-ta-place.tres_cher pourrait être...

    Ou sinon, on pourrait proposer On-fait-tes-devoirs-faux-à-ta-place.gratuit comme ceux qui mettent de mauvais documents en téléchargement pour dissuader les internautes de télécharger illégalement.

    Mais pourquoi suis-je aussi méchant ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/03/2012, 20h26
  2. [Débutant] exercice sur la récursivité
    Par neufrdb dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 03/03/2011, 17h59
  3. Exercice sur la récursivité
    Par weld sad9ia dans le forum Pascal
    Réponses: 5
    Dernier message: 22/12/2007, 09h33
  4. Pb sur une récursivité
    Par Maelen dans le forum Langage
    Réponses: 3
    Dernier message: 09/08/2006, 11h50
  5. [Exercice] Aide sur requête
    Par Dobyan08 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 09/02/2006, 15h47

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