Algorithmes | Récursivité | question 6

Afficher la discussion

Améliorer l’article

Enregistrer l’article

J’aime l’article

Afficher la discussion

Améliorer l’article

Enregistrer l’article

J’aime l’article

Sortie du programme suivant ?

#include<stdio.h>

void print(int n)

{

    if (n > 4000)

        return;

    printf("%d ", n);

    print(2*n);

    printf("%d ", n);

}

 

int main()

{

    print(1000);

    getchar();

    return 0;

}

(UN) 1000 2000 4000
(B) 1000 2000 4000 4000 2000 1000
(C) 1000 2000 4000 2000 1000
(RÉ) 1000 2000 2000 1000

Réponse: (B)
Explication: Première fois n=1000
Ensuite, 1000 est imprimé par la première fonction printf puis appelez print(2*1000) puis imprimez à nouveau 2000 par la fonction printf puis appelez print(2*2000) et il imprime 4000 la prochaine fois que print(4000*2) est appelé.

Ici, 8000 est supérieur à 4000, la condition devient vraie et revient à la fonction (2*4000). Ici n = 4000 puis 4000 s’imprimeront à nouveau jusqu’au deuxième printf.

De même, print(2*2000) après cela n=2000 puis 2000 s’imprimera et reviendra à print(2*1000) ici n=1000, donc imprimez 1000 jusqu’à la seconde printf.

L’option (B) est correcte.
Quiz de cette question

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *