1. 程式人生 > >6-6 求單鏈表結點的階乘和(15 分) 本題要求實現一個函式,求單鏈表L結點的階乘和。這裡預設所有結點的值非負,且題目保證結果在int範圍內。

6-6 求單鏈表結點的階乘和(15 分) 本題要求實現一個函式,求單鏈表L結點的階乘和。這裡預設所有結點的值非負,且題目保證結果在int範圍內。

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;

}

資料結構體好久沒用了,這個題目很新奇。

注意階乘首項的分配。

階乘採用陣列一次記錄最大的完全部階乘會比較省時間和記憶體。