Целочисленное разбиение (алгоритм и рекурсия)

Нахождение сколько комбинаций суммы числа (переменная n в коде). Например:

3 = 1 + 1 + 1 = 2 + 1 = 3 => 3 года

5 = 5 = 4 + 1 = 3 + 2 = 3 + 1 + 1 = 2 + 2 + 1 = 2 + 1 + 1 + 1 = 1 + 1 + 1 + 1 + 1 => ANS 7

В следующем примере, м максимальное число иn это сумма, цель состоит в том, чтобы найти, сколько (сумма) комбинация имеет.

Я просто хочу знать, почему?p(n, m) = p(n, m - 1) + p(n - m, m)

Код здесь:

int p (int n, int m)
{
    if (n == m)
        return 1 + p(n, m - 1);
    if (m == 0 || n < 0)
        return 0;
    if (n == 0 || m == 1)
        return 1;

    return p(n, m - 1) + p(n - m, m);

}

Оценил!

Ответы на вопрос(4)

Ваш ответ на вопрос