Custom function to return certain values

I've built the following function to come back if k;
1 = a
2 = b
3 = c
4 = d

(a((k-3) × (k-2) × (k-1))×(1/6)+
(b ×((k-4) × (k-2) × (k-1))×(-1/2)+
(c ×((k-4) × (k-3) × (k-1))×(1/2)+
(d((k-4) × (k-3) × (k-2))×(-1/6))

I came to the solution with where the bold statements will elect the other possible values ​​of k and italicized statements are a correction to return 1 in order to return relevant a, b, c or re value. I can build more consecutive patterns, but it gets longer when I add more values.

Is there a shorter method to achieve this?