La récursivité - comme nous le savons tous - est l'un de ces problèmes - qui vous entoure la tête ressemble à un «jalon» dans votre voyage de programmation.
Mais quand il s'agit de l'utiliser réellement dans des problèmes du monde réel - connaître la mécanique de la récursivité ne suffit pas - il faut également comprendre la nature des problèmes où la récursivité est la solution la plus appropriée.
Voici donc ma question...
- quels sont les "schémas de problèmes" qui appellent la solution de la récursivité
- la récursivité est-elle une forme de stratégie "diviser et conquérir" ou une forme de "réutilisation de code" - ou, est un modèle de conception à part entière
- pouvez-vous nous donner un exemple d'un problème du monde réel où la récursivité vient à l'esprit comme une solution immédiate
-- METTRE À JOUR --
beaucoup de réponses se réfèrent à de "vrais problèmes" comme la traversée d'arbres, de factorielle, etc. Je préférerais "les VRAIS vrais problèmes" - laissez-moi vous donner un exemple ...
Nous avions un GRAND groupe de texte (environ 30 Mo de texte sous forme de liste liée structs
), et nous devions en faire un index pour la recherche en texte intégral. Nous devions garder l'index entier en mémoire et réindexer le texte toutes les 10 minutes.
Toutes les 10 minutes, nous comparions le texte entier (deux listes liées, ligne par ligne) avec un morceau de texte nouvellement généré - pour voir quelle ligne a été modifiée - puis nous ré-indexions uniquement cette ligne - de cette façon nous pourrions éviter d'avoir à réindexer le texte ENTIER. N'oubliez pas - nous devions trouver les points de diff entre deux listes liées de 30 Mo.
Un de mes collègues a mis au point un programme fantastique qui utilisait la récursivité LOURDE pour comparer les lignes - puis collecter les positions où les mandrins différaient dans un tableau - oui je sais que cela semble déroutant - comment la récursivité pourrait aider ici - mais ça faisait.
Le point est - comment pourrait-il voir que ce problème pourrait être résolu intelligemment avec une utilisation intensive de la récursivité?