Przedstawienie liczby za pomocą cyfr 1, 2, 3

0

Witam, mam napisać program który wypisze mi wszystkie możliwości rozłożenia liczby na cyfry 1, 2, 3. Na przykład podaje liczbę 5, a program wypisuje: 11111, 1112, 1121,1211,2111, 122, 212, 221, 23, 32, itd. Mam już funkcje która liczy ile będzie tych możliwości, ale nie wiem jak je wypisać. Ktoś może wytłumaczyć, podać jakiś pomysł? Z góry dziękuję

0

Z racji, że suma 1112 i 1121 są dla mnie jednoznaczne, to ja bym to rozpatrywał rekurencją. Wystarczy, że zauważysz, że 2 = 1 + 1 oraz, że 3 = 2 + 1, a następnie zaczynasz od wyświetlenia wartości:

  • same 3 i uzupełnienie przy pomocy 2 lub 1
  • rekurencyjne rozłożenie każdej liczby innej niż 1 na sumę elementów (najlepiej posortować i zamienić pierwszą nie jedynkę na jej sumę i tak aż nie wyświetlisz wszystkich zestawów).

1 użytkowników online, w tym zalogowanych: 0, gości: 1