VBA Partitions d’un nombre entier

Excellent exemple de récursivité avec cette fonction écrivant les méthodiquement les manière d’écrire un nombre entier par addition:

Sub demo()
  printPartitions 4, 4, ""
End Sub

Function printPartitions(tgt As Long, max As Long, sfx As String) As String
  If tgt = 0 Then
    Debug.Print sfx
  Else
    If max > 1 Then printPartitions tgt, max - 1, sfx
    If max <= tgt Then printPartitions tgt - max, max, sfx & " " & max
  End If
End Function

https://www.mrexcel.com/board/threads/print-all-unique-integer-partitions-given-an-integer-as-input-code.1132768/

J’ai juste inversé sfx et max pour avoir la décomposition en partant du plus grand nombre au plus petit.

Partagez: