你运行过没?

羊肉串 葡萄干 哈密瓜!!

以后写程序要注意格式哦.
否则会看起来很麻烦,而且也没有条理,我帮你整理了一下.
这个函数中 sum参数代表什么含义?
int x;
int y;
int a[20];
void fun(int sum,int m,int n)
{
  int i;
  if(n<=0)
  {
    if(x==sum)
    {
      for(i=0;i<y;i++) printf("%4d",a[i]);
      printf("\n");
    }
    return;
  }
  for(i=m;i>0;i++)
  {
    a[y-n]=i;
    fun(sum+a[y-n],i,n-1);
  }
}
我看了一下,你的思路还是正确的,因为这类程序用第归解决是比较容易且易读的
