/* 设m,n均为自然数,m可表示为一些不超过n的自然数之和, f(m,n)为这种表示方式的数目。 例:f(5,3)=5,有五种表示方式: 3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1 */ int f(m,n) int m,n; { if(m==1)return 1; if(n==1)return 1; if(m<n) return f(m,m); if(m==n)return 1+f(m,n-1); return f(m,n-1)+f(m-n,n); } main() { int num; num=f(6,4); printf("f(6,4)=%d/n",num); num=f(111,10); printf("f(111,10)=%d/n",num); }