Bases de la programmation (trace de pseudo-code)

Quelle est la valeur de retour de la fonction s suivante appelée sous la forme s(7) ?

○integer: s(integer: n)
  if (n ≦ 0)
    return 0
  endif
  return n + s(n − 2)
  1. A15
  2. B16
  3. C28
Afficher la réponse et l'explication

Réponse : B. 16

s(7) appelle s(5) pour calculer 7 + s(5), s(5) appelle s(3) pour 5 + s(3), s(3) appelle s(1) pour 3 + s(1), et s(1) appelle s(−1) pour 1 + s(−1) ; s(−1) renvoie 0 car n ≦ 0. Les valeurs s'additionnent au retour des appels, ce qui donne s(7) = 7 + 5 + 3 + 1 + 0 = 16. C'est la somme des entiers impairs positifs jusqu'à 7.

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

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

  1. Lorsque la procédure p suivante est appelée sous la forme p(3), quelle suite de valeurs est affichée ?
  2. Quelle est la valeur de retour de la fonction fib suivante appelée sous la forme fib(10) ?
  3. 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 ?
  4. ⊕ désigne le OU exclusif bit à bit. Quelles sont les valeurs de x et y après l'exécution du programme suivant ?
  5. 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 ?