ProgYoung,
функциия sumCount определяет, сколькими способами можно разложить число n на m слагаемых, так что каждое слагаемое будет в пределах от 0 до 9, а первое слагаемое - от f до 9. Она работает рекурсивно - в цикле перебирает все возможные значения первого слагаемого и на каждой итерации считает sumCount(m-1, n-i) - т.е. если первое число взять равным i, то сколько будет вариантов по остальным числам и оставшейся сумме. Это всё суммируется.
Массив saved - для сохранения значений sumCount(m, n), т.к. они часто будут повторяться: например, если первые два слагаемых равны (1, 7), (2, 6) и т.д., то оставшаяся сумма одинакова.
т.е. sumCount как раз и делает подсчет вариантов для нечетных разрядов, коих оказалось примерно половина от всех разрядов числа.
|