数组used初始化时值为-1(负数就行),因为有值等于0的情况 #include<stdio.h> #include<math.h> #include<memory.h> #define N 101 int used[N][N]; int f(int m,int n){ if(n==0) return m; if(m==0) return n; if(used[m][n]!=-1) return used[m][n]; used[m][n]=fabs(f(m,n-1)-f(m-1,n)); return used[m][n]; } int main(){ int m,n; while(scanf("%d%d",&m,&n)!=EOF){ memset(used,-1,sizeof(used)); printf("%d/n",f(m,n)); } return 0; }