👤

Bonjour je bloque sur ça besoin d’aide s’il vous plaît c’est en nsi (terminal)


Avec ce programme :


def chercher(T,n,i,j):

if i < 0 or ??? :

print("Erreur")

return None

if i > j :

return None

m = (i+j) // ???

if T[m] < ??? :

return chercher(T, n, ??? , ???)

elif ??? :

return chercher(T, n, ??? , ??? )

else :

return ???



L’exécution du code doit donner :

>>> chercher([1,5,6,6,9,12],7,0,10)

Erreur

>>> chercher([1,5,6,6,9,12],7,0,5)

>>> chercher([1,5,6,6,9,12],9,0,5)

4

>>> chercher([1,5,6,6,9,12],6,0,5)

2

Bonjour Je Bloque Sur Ça Besoin Daide Sil Vous Plaît Cest En Nsi TerminalAvec Ce Programme Def ChercherTnij If I Lt 0 Or PrintErreur Return None If I Gt J Retur class=
Bonjour Je Bloque Sur Ça Besoin Daide Sil Vous Plaît Cest En Nsi TerminalAvec Ce Programme Def ChercherTnij If I Lt 0 Or PrintErreur Return None If I Gt J Retur class=

Sagot :

Bonsoir

Cet exercice n'est pas forcément facile à résoudre car on aurait tendance à utiliser une boucle for pour faire la fonction mais ici avec les fragments donnés, on n'en est interdit.

Code complet ci-joint

Le principe du code

Si le i (début) < 0 ou si le j (fin) < que la longueur totale du tableau:

   Alors print Erreur et retourner None

Si le début (i) > que la fin (j):

   Alors retourner None

Définir m comme l'index de la valeur centrale du tableau (longueur totale (i+j) divisé (//) par 2)

Si la valeur centrale du tableau, correspondant à l'index m (T[m]) est < à la valeur recherchée (n):

    Alors retourner la fonction (donc la relancer) en augmentant la valeur de départ (i) de 1

Sinon, Si la valeur centrale du tableau, correspondant à l'index m (T[m]) est > à la valeur recherchée (n):

    Alors retourner la fonction (donc la relancer) en diminuant la valeur de fin (i) de 1

Sinon (donc si T[m] = n) :

    Retourner m (donc l'index du chiffre recherché)

Explications

Je pense que le pseudo-code du dessus suffit à comprendre mais si ce n'est pas le cas, je précise:

  • Pour trouver m on additionne i + j pour obtenir la "longueur" qu'on va parcourir dans le tableau, on divise cette valeur pour tomber sur la valeur centrale du tableau, celle qui se trouve au milieu.
  • Quand on compare que T[m] < n et qu'on finit par renvoyer la fonction avec i+1, c'est pour diminuer la plage de valeur qu'on va englober dans le tableau
  • Quand on compare T[m] > n et qu'on renvoi la fonction avec j-1, c'est comme au dessus, pour diminuer la plage de valeur. On fait ca jusqu'à ce que la plage analysée n'englobe plus qu'une seule valeur.

J'espère que ces explications t'aurons aidé à comprendre, si tu as mal compris quelque chose ou que je l'ai mal expliqué tu peux me demander dans les commentaires ;)

Bonne soirée & bonne chance !

View image CLEMENTCG

© 2024 IDNLearn. All rights reserved.