int FactorialSum( List L )
{
  int max=0,sum=0;
  List p,head;
  head=L;
  p=head;
  while(p!=NULL)
  {
    if(max<p->Data)
    max=p->Data;
    p=p->Next;
  }
  int fa[max+1];
  fa[1]=1;
  for(int i=1;i<max+1;i++)
  fa[i]=fa[i-1]*i;
  p=head;
  while(p!=NULL)
  {
    sum+=fa[p->Data];
    p=p->Next;
  }
  return sum;

}

数据结构体好久没用了,这个题目很新奇。

注意阶乘首项的分配。

阶乘采用数组一次记录最大的完全部阶乘会比较省时间和内存。

更多推荐