有关爬楼梯问题的题不会做

一共有n阶楼梯,你每次至多可以爬k阶,编写程序,对于指定的n,k输出所有可以正好爬到n阶楼梯的方案的个数。例:输入:32输出:3(n=3,k=2,方案是1+1+1=3,1+2=3,2+1=3)输入:54输出:15(11111111211211211211122121212231113111323321441)输入:10 3输出:274

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int k = sc.nextInt();
        int a[] = new int[n+1];
        for(int i=1;i<=k;i++){
            a[i] = (int)Math.pow(2,i-1);
        }
        for(int i=k+1;i<=n;i++){
            a[i] = 0;
            for(int j=1;j<=k;j++) {
                a[i] += a[i - j];
            }
        }
        System.out.println(a[n]);
    }