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;
{
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;
}
数据结构体好久没用了,这个题目很新奇。
注意阶乘首项的分配。
阶乘采用数组一次记录最大的完全部阶乘会比较省时间和内存。