Добрый день. Задача из курса по алгоритмам, конкретно - из раздела Рекурсия. Но я попытался решить её комбинаторно и не преуспел. Собственно, задача:
Цитата:
На расстоянии

шагов от магазина стоит человек. Каждую секунду он выбирает, куда сделать шаг: к магазину или в противоположном направлении. Напишите программу, которая определит, сколькими способами он может попасть в магазин, пройдя ровно

шагов и оказавшись в магазине только после выполнения последнего шага.
На вход подаются через пробел два целых числа

– расстояние до магазина в шагах и

– требуемое количество шагов, которые должен сделать человек:

На выход следует подать только одно число - количество способов попадания в магазин.
Человек стоит на расстоянии

шагов, а сделать должен

шагов. При

шагов всё ясно, количество способов равно

. Рассмотрим остальные случаи:

.
Шаги можно делать по прямой в двух направлениях: к магазину (пусть это будет "вправо") и от магазина (соответственно, "влево"). Всего шагов должно быть

, из них

шагов влево и, соответственно,

шагов вправо.
Насколько я понимаю, необходимо каким-то образом распределить

шагов влево среди

шагов.
В данном случае размещаем подмножество однородных элементов (шагов влево), порядок которых не важен. Это, как я подумал, сочетания без повторений:

.
Но явно ошибся / чего-то не учёл, хотя не могу понять, чего. Задача не решается, хотя кажется несложной, к моему стыду.