Bases de la programmation (trace de pseudo-code)

Lorsque la procédure p suivante est appelée sous la forme p(3), quelle suite de valeurs est affichée ?

○p(integer: n)
  if (n > 0)
    p(n − 1)
    output n
    p(n − 1)
  endif
  1. A1, 1, 2, 1, 1, 2, 3
  2. B3, 2, 1, 1, 2, 1, 1
  3. C1, 2, 1, 3, 1, 2, 1
Afficher la réponse et l'explication

Réponse : C. 1, 2, 1, 3, 1, 2, 1

p(1) exécute p(0), affiche 1 puis exécute p(0) : elle n'affiche donc que « 1 ». p(2) exécute p(1), affiche 2 et exécute p(1), ce qui donne « 1, 2, 1 ». p(3) donne « 1, 2, 1 » avec p(2), puis 3, puis de nouveau « 1, 2, 1 » avec p(2) : 1, 2, 1, 3, 1, 2, 1. Il y a 2³ − 1 = 7 valeurs affichées, dans le même ordre que les numéros des disques déplacés dans les tours de Hanoï à trois disques.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de la programmation (trace de pseudo-code)

  1. Quelle est la valeur de retour de la fonction fib suivante appelée sous la forme fib(10) ?
  2. Lorsque la fonction c suivante est appelée sous la forme c(4, 2), combien de fois c est-elle appelée, premier appel compris ?
  3. ⊕ désigne le OU exclusif bit à bit. Quelles sont les valeurs de x et y après l'exécution du programme suivant ?
  4. x et y sont des entiers non signés sur 8 bits. << et >> sont des décalages logiques : les bits libérés sont remplis par 0, et les bits qui sortent des 8 bits sont perdus. ∨ désigne le OU bit à bit. Quelle est la valeur de y après l'exécution du programme suivant ?
  5. ∧ désigne le ET bit à bit. Quelle est la valeur de c après l'exécution du programme suivant ?