Maîtrisez la récursivité : quiz interactif pour la 4SI
🧠 Quiz 10 questions 10 min
QUIZ INTERACTIFDiff. 5/10
Série d'exercices corrigés sur la récursivité pour la 4ème année Sciences de l'Informatique. Problèmes classiques, cas de base et optimisation. Idéal pour réviser.
Question 1 sur 10 10:00
[{"id":13163,"question":"Quelle est la condition essentielle pour qu'une fonction récursive s'arrête ?","option_a":"Un cas de base","option_b":"Une boucle infinie","option_c":"Un appel à une autre fonction","option_d":"Une variable globale","option_e":"","option_f":"","bonne_reponse":"A","explication":"Le cas de base est la condition qui permet d'arrêter la récursion. Sans lui, la fonction s'appellerait indéfiniment, provoquant une erreur de pile débordée.","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0},{"id":13164,"question":"La fonction suivante calcule-t-elle correctement la factorielle de n ? \u003Cbr\u003E \u003Ccode\u003Edef factorielle(n):\u003Cbr\u003E return n * factorielle(n-1)\u003C\/code\u003E","option_a":"Vrai","option_b":"Faux","option_c":"","option_d":"","option_e":"","option_f":"","bonne_reponse":"B","explication":"Cette fonction manque de cas de base. Elle doit inclure une condition pour n=0 ou n=1, par exemple : \u003Ccode\u003Eif n == 0: return 1\u003C\/code\u003E.","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0},{"id":13165,"question":"Quel est l'ordre de complexité temporelle de la fonction récursive de Fibonacci (sans optimisation) ?","option_a":"O(1)","option_b":"O(n)","option_c":"O(2^n)","option_d":"O(n log n)","option_e":"","option_f":"","bonne_reponse":"C","explication":"La version naïve de Fibonacci a une complexité exponentielle O(2^n) car elle recalcule les mêmes valeurs plusieurs fois. Des optimisations (mémoïsation) permettent de réduire cette complexité.","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0},{"id":13166,"question":"Parmi ces problèmes, lequel est le plus adapté à une solution récursive ?","option_a":"Calculer la somme des éléments d'un tableau","option_b":"Trier un tableau avec l'algorithme de tri rapide","option_c":"Rechercher un élément dans un tableau trié","option_d":"Calculer le PGCD de deux nombres","option_e":"","option_f":"","bonne_reponse":"B","explication":"Le tri rapide (QuickSort) est naturellement implémenté de manière récursive en divisant le tableau en sous-parties. Les autres problèmes peuvent être résolus de manière itérative plus simplement.","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0},{"id":13167,"question":"Que se passe-t-il si on oublie de décrémenter le paramètre dans un appel récursif ?","option_a":"Vrai","option_b":"Faux","option_c":"","option_d":"","option_e":"","option_f":"","bonne_reponse":"A","explication":"Oublier de décrémenter le paramètre (ou de modifier l'état) empêche d'atteindre le cas de base, ce qui provoque une boucle infinie et une erreur de pile débordée.","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0},{"id":13168,"question":"Quelle structure de données est implicitement utilisée lors d'un appel récursif ?","option_a":"Une liste","option_b":"Une pile","option_c":"Une file","option_d":"Un arbre","option_e":"","option_f":"","bonne_reponse":"B","explication":"La pile d'exécution (call stack) mémorise les appels de fonctions et leurs états. Chaque nouvel appel empile une nouvelle frame, et le retour dépile la dernière frame.","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0},{"id":13169,"question":"Pour calculer 5! avec une fonction récursive, combien d'appels récursifs seront effectués (en comptant l'appel initial) ?","option_a":"4","option_b":"5","option_c":"6","option_d":"10","option_e":"","option_f":"","bonne_reponse":"C","explication":"Pour calculer 5!, la fonction s'appelle récursivement pour 5, 4, 3, 2, 1 et 0 (cas de base). Cela fait 6 appels au total (5 récursifs + 1 initial).","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0},{"id":13170,"question":"La récursivité est-elle toujours plus intuitive que l'itération pour résoudre un problème ?","option_a":"Vrai","option_b":"Faux","option_c":"","option_d":"","option_e":"","option_f":"","bonne_reponse":"B","explication":"Pas toujours. Certains problèmes (comme le parcours séquentiel d'un tableau) sont plus intuitifs à résoudre de manière itérative. La récursivité est souvent plus adaptée aux structures arborescentes ou aux problèmes naturellement récursifs.","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0},{"id":13171,"question":"Quel est l'avantage principal de la récursivité dans la résolution de problèmes comme les tours de Hanoï ?","option_a":"Elle est plus rapide","option_b":"Elle simplifie la décomposition du problème","option_c":"Elle utilise moins de mémoire","option_d":"Elle est obligatoire pour ce problème","option_e":"","option_f":"","bonne_reponse":"B","explication":"La récursivité permet de décomposer naturellement le problème des tours de Hanoï en sous-problèmes plus simples (déplacer n-1 disques, puis le disque n, puis déplacer à nouveau n-1 disques).","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0},{"id":13172,"question":"Parmi ces affirmations, laquelle est FAUSSE concernant la récursivité ?","option_a":"La récursivité peut provoquer une erreur de pile débordée si le cas de base est mal défini","option_b":"La récursivité est toujours plus efficace que l'itération","option_c":"La récursivité peut être utilisée pour parcourir des structures de données arborescentes","option_d":"La récursivité repose sur la pile d'exécution pour mémoriser les appels","option_e":"","option_f":"","bonne_reponse":"B","explication":"L'affirmation 'La récursivité est toujours plus efficace que l'itération' est fausse. La récursivité peut être moins efficace en termes de temps et de mémoire (pile d'exécution) dans certains cas, bien qu'elle soit souvent plus intuitive pour certains problèmes.","points":1,"type":"qcm","actif":1,"section_id":null,"ordre":0}]
Chargement...
Cliquez sur une réponse pour valider
Les options de réponse ne sont pas disponibles pour cette question.