求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;

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM