Lo puedes entender pensando en la combinatoria como un árbol que se ramifica. En tu ejemplo K=3 y N=5:
/ 3
1 - 2 - 4
\ \ 5
\
3 -4
\ 5
Faltarían el resto de ramas pero espero que más o menos se entienda la idea.
Para programarlo pues tienes tantos "troncos" como K {1,2,3}, y de cada tronco surgen (N-indiceDelTronco) ramas. A su vez de estas ramas surgen otras nuevas con la misma regla, y los niveles de ramas serán tantos como K.
En tu ejemplo:
Del "tronco" 2 saldrían (5-2) ramas, las que corresponden a {3,4,5}
De la rama 3 saldrían (5-3) ramas, {4,5}
De la rama 4 saldrían (5-4) ramas, {5}
Espero que te sirva de ayuda para programar tu algoritmo.