概述
【基础入门题】2021.11.14
F(n)=1!+2!+3!+...+n!, 编程求F(50), F(100), F(1000)的值(n! 表示阶乘运算)
编程语言:包括但不限于Python
题目来源:派森特给站每日刷题频道
对于大整数的计算,python比较有优势的,基本没有溢出的烦恼。
方法一:自定义一个阶乘函数:
def fact(n):
res = 1
for i in range(1,n+1):
res *= i
return res
def F(n):
res = 0
for i in range(1,n+1):
res += fact(i)
return res
'''
>>> F(50)
31035053229546199656252032972759319953190362094566672920420940313
'''
方法二:lambda表达式: 递归法有递归层数的限制,此表达式最大算到fact(1024)。
fact = lambda x:x*fact(x-1) if x else 1
def F(n):
res = 0
for i in range(1,n+1):
res += fact(i)
return res
方法三:库math的factorial()函数:
def F(n):
from math import factorial as fact
res = 0
for i in range(1,n+1):
res += fact(i)
return res
方法四:双循环,阶乘的过程“内置”到内循环中:
def F(n):
res = 0
for i in range(1,n+1):
fact = 1
for j in range(1,i+1):
fact *= j
res += fact
return res
方法四: 不断提取公因数分解和式
F(n)=1!+2!+3!+4!+...+n!
= 1 + 1*2 + 1*2*3 + 1*2*3*4 + ... + 1*2*3*...*n
= 1 + 2*( 1 + 3*( 1 + 4*( 1 + ... + (n-1)*n))))
def F(n):
res = 1
for i in range(n,1,-1):
res = res*i+1
return res
方法五: 同上,换正序的range()
def F(n):
res = 1
for i in range(n-1):
res *= n-i
res += 1
return res
欢迎加入CSDN社区!!!https://bbs.csdn.net/forums/PythonTogetherhttps://bbs.csdn.net/forums/PythonTogether
最后
以上就是文艺绿茶为你收集整理的【基础入门题018】求阶乘的和的全部内容,希望文章能够帮你解决【基础入门题018】求阶乘的和所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复