求单链表L各结点的阶乘之和(c语言)

链表需要用到指针 阶乘需要用到递归

链表中的注意事项:

1.链表L是否等于NULL ----------是循环结束的条件

2.链表L->Data ---------取链表L中各个结点的值

3.L=L->next  --------相当于++i  i++  是循环的条件 使得结点指向下一个结点

递归很简单的思想:

1.当n=0 或n=1时    返回1

2.否则    返回n*fun(n-1);

 

代码如下:

int fun (int n){
   if(n==0 ||n==1){
       return 1;   
    }else{
        return n*fun(n-1);
    }      
}

int lianbaiosum(List L){
    int sum=0;
    while(L!=NULL){
        int m=fun(L->Data);
        s+=m;
        L=L->Next
    }
    return s;
}    

  

posted @ 2016-10-16 14:07  meteorst  阅读(775)  评论(0编辑  收藏  举报