求助!
#include <iostream>
#include <cstdio>
using namespace std;int n,m;
long long s[31][31];
long long d(int a,int b){
if(a==m-1){
if(b==2||b==n)return 1;
return 0;
}
if(s[a][b])return s[a][b];
s[a][b]=d(a+1,b%n+1)+d(a+1,b!=1?b-1:n);
return s[a][b];
}
int main(){
cin>>n>>m;
cout<<d(1,2)+d(1,n);
}
这道题应该用递归做吗?