求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;
}
本文章为作者原创,如无作者授权不得他用!
求1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+...+N! N阶阶乘求和算法 JAVA C Python的更多相关文章
- 求1到n这n个整数间的异或值 (O(1)算法)
问题:求1到n这n个整数间的异或值,即 1 xor 2 xor 3 ... xor n 记 f(x, y) 为x到y的所有整数的异或值. 对 f(2^k, 2^(k+1) -1) (注意文章中的 ...
- 高精度算法求n阶阶乘
1 #include "stdio.h" 2 #include "String.h" 3 #define MAX 10000 4 int f[MAX]; 5 v ...
- 编程用泰勒公式求e的近似值,直到最后一项小于10的负6次方为止。
#include<stdio.h>#include<math.h>void main(){ int n; float j=1.0,sum=1.0; for(n=1;;n++) ...
- n阶高精度乘法,(求高阶阶乘)
先来复习一下小学数学 : 大家还记不记得小学算多位数的乘法是怎么算的? 卖个关子,大家一定要好好想想! 好了,别管到底还能不能想起来我们都要一块复习一下: 我们借助一下源自百度的图片 来复习下 相信大 ...
- python 基础部分重点复习整理--从意识那天开始进阶--已结
pythonic 风格编码 入门python好博客 进阶大纲 有趣的灵魂 老齐的教程 老齐还整理了很多精华 听说 fluent python + pro python 这两本书还不错! 元组三种遍历, ...
- python2.7练习小例子(二十三)
23):题目:求1+2!+3!+...+20!的和. 程序分析:此程序只是把累加变成了累乘. #!/usr/bin/python # -*- coding: UTF-8 -*- n = ...
- 快速求n的质因子(数论)
快速求n的质因子 如何尽快地求出n的质因子呢?我们这里又涉及两个好的算法了! 第一个:用于每次只能求出一个数的质因子,适用于题目中给的n的个数不是很多,但是n又特别大的 #include<std ...
- Manacher算法 - 求最长回文串的利器
求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复 ...
- 汇编语言-求X的阶乘
1. 题目:求X的阶乘值 2. 要求:输入一个整型数(不超过10),求出其阶乘值后输出,求阶乘的算法用子程序来实现. 3. 提示:可以用递归来实现,也可以用简单的循环来实现. 这里使用循环来实现: 对 ...
随机推荐
- BZOJ1970 [Ahoi2005] 矿藏编码
Description 依次对每份进行编码,得S1,S2,S3,S4.该矿藏区的编码S为2S1S2S3S4. 例如上图中,矿藏区的编码为:2021010210001. 小联希望你能根据给定的编码统计出 ...
- FCC的javascript初级算法题解答
FCC上的javascript基础算法题 前一阵子做的基础算法题,感觉做完后收获还蛮大的,现在将自己的做法总结出来,供大家参考讨论.基本上做到尽量简短有效,但有些算法还可以继续简化,比如第七题若采用正 ...
- 远景GIS云产品规划
远景GIS云平台在初期有过产品设计,随着研发工作的进行以及对GIS云的认知更进行一步,最近重新梳理了平台的产品规划,使以后的开发不至于走偏方向. GIS云平台的研发也是摸着石头过河,免不了有考虑不到的 ...
- Nuget Tips
Install-Package时老是提示找不到Available Source,研究了下Nuget Package Manager的配置.发现有两个地方可以改: 1.Visual Studio中Too ...
- 图片裁剪(基于RxPaparazzo)
图片裁剪(基于RxPaparazzo) 前言:基于RxPaparazzo的图片裁剪,图片旋转.比例放大|缩小. 效果: 开发环境:AndroidStudio2.2.1+gradle-2.14.1 涉及 ...
- 浅谈搜索引擎SEO(HTML/CSS)
SEO:搜索引擎优化(免费): SEM:搜索引擎营销(付费). 它们两者的区别是: 1.SEM高投入,SEO低投入: 2.SEM短.效益块,SEO长期投入.增长慢: 3.新广告法颁布之后SEM广告位减 ...
- ls 操作命令 -l/-R和rm -r dir 功能实现
ls -R #include <sys/stat.h> #include <dirent.h> #include <fcntl.h> #include <st ...
- Druid学习---配置_DruidDataSource参考配置
[更多参考]https://www.cnblogs.com/niejunlei/p/5977895.html 配置_DruidDataSource参考配置 以下是一个参考的连接池配置: <bea ...
- 企业级NGINX的重定向rewrite
vim /usr/local/nginx/conf/nginx.conf server { listen 80; server_name www.ftl.com; rewrite ^/(.*) htt ...
- 【最强】微软Tech Summit 2017动手实验室教程
[最强]微软Tech Summit 2017动手实验室教程 原创 2017-11-07 MSPrecious MSPrecious成长荟 这是! 你绝对找不到的教程! Ignite2016的教程你找到 ...