Compréhension de code/fonction

Bonjour,

je dois documenter la fonction suivante et donc comprendre ce que la fonction rend or je ne comprend pas du tout :
def foo(p,k):
    num =1
    den = 1
    i = 1
    while i <= k:
        num =num * (p -i + 1)
        den =den * i
        i = i + 1
    return num // den


merci d'avance pour votre aide

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

  1. Bonsoir,

    Je suis comme toi, et en faisant de simples essais et print dans la fonction, le résultat saute aux yeux.

    Allez un indice, le résultat retourne un nombre, qui en en math se calcule en utilisant des factorielles.
    1. Je ne vois pas le lien avec les factorielles et je ne comprend pas ce que signifie le resultat retourne un nombre
    2. @inest01
      foo(p, k) 
      => p! ÷ ((p-k)! × k!)

      Tu sais, tu peux modifier cette fonction pour comprendre ce qu'il se passe dedans, et faire des tests avec.

      def foo(p,k):
          num =1
          den = 1
          i = 1
          print('p :{}, k :{}'.format(p, k))
          while i <= k:
              num =num * (p -i + 1)
              den =den * i
              i = i + 1
              print('i :{}, num :{}, den : {}'.format(i, num, den))
          return num // den
      
      
      print(foo(10, 2))
      print('-' * 20)
      print(foo(10, 3))
      print('-' * 20)
      print(foo(10, 4))
      print('-' * 20)
      print(foo(10, 5))