Уровень C. Дано натуральное число N. Требуется получить и вывести ** экран все возможные...

0 голосов
330 просмотров

Уровень C. Дано натуральное число N. Требуется получить и вывести на экран все возможные различные способы представления этого числа в виде суммы натуральных чисел (то есть, 1 + 2 и 2 + 1 – это один и тот же способ разложения числа 3). Решите задачу с помощью рекурсивной процедуры.
Пример:
Введите натуральное число:
4
1 + 1 + 1 + 1
1 + 1 + 2
1 + 3
2 + 2


Информатика (15 баллов) | 330 просмотров
0

6 баллов - это жлобство... сейчас напишу

Дан 1 ответ
0 голосов
Правильный ответ

Python 3.4

import math
import sys
def step(n, L):
    if n == 0:
        print(L[1], end = '')
        for i in L[2:]: print('+{0}'.format(i), end = '')
        print()
    else:
        if n >= L[len(L) - 1]:
            for i in range(max(1, L[len(L)-1]), n + 1):
                step(n - i, L + [i])            
n = int(input('Введите число, которое хотите разложить на слагаемые: '))
step(n,[0])

(5.2k баллов)