求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N! N階階乘求和算法 JAVA C Python

 

 

一行代碼算出1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N!   N階階乘求和

時間複雜度爲O(n)

空間複雜度爲O(1)

對於任意正整數N  求1!-N!一行算出和給定求1!+...+N!的和(0的階乘爲1,本方法適用)

for(long sum=1;N>1;N--)  sum=sum*n+1;

//sum爲和

原理分析:

首先列出前三項找規律如下圖,發現求1-N階階乘中的規律   因式分解得  1(1+2(1+3(1+4(1+5(1+N)))))

代碼實現

Java語言寫成函數f(n):

long f(long n)

{

    long sum=1;//1-n階階乘的和

    for(;n>1;n--)

         sum=sum*n+1;

    return sum;

}

Python語言:

def f(n):
    sum = 1
    while n > 1:
        sum = sum * n + 1
        n-=1
    return sum

C語言:

long f(long n)
{
    long sum=1;
    for(;n>1;n--)
       sum=sum*n+1;
    return sum;
}
遞歸法

Java語言:
long f(long n,long sum)//sum初始值爲1

{

if(n>1)

   return f(n-1,sum*n+1);

return sum;

}

Python語言:

def f(n, sum=1):
    if n > 1:
        return f(n - 1, sum * n + 1)
    return sum

C語言:

long f(long n,long sum)//sum初始值爲1

{

if(n>1)

   return f(n-1,sum*n+1);

return sum;

}
本文章爲作者原創,如無作者授權不得他用!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章