[英]Python, function for an arithmetic sequence
顺序是这样的:1+ 1/2。 + 1/3。 + 1/4....... 1/n! 它基本上是 1 除以某个阶乘,直到达到 n!
我已经弄清楚如何计算阶乘,例如: 5:该代码如下所示:
def factorial(n):
if n == 1:
return n
return n * factorial(n-1)
我试图用谷歌搜索一个解决方案,但似乎找不到任何解决方案:(
我将如何编码?
使用math
模块:
import math
def seq(t=100):
out = 0
for i in range(1,t):
out += 1 / math.factorial(i)
return out
一旦你有了factorial
function (你的或math.factorial
),rest 几乎是简单的英语;)
sum(1/factorial(i+1) for i in range(n))
好吧,很明显你可以通过返回逆阶乘来返回逆阶乘:
return factorial(n-1) / n
但是对于一个序列,这是浪费的。 看看你的序列:
1 1 1 1 1 1
1 + - + - - + - - - + ...
2 2 3 2 3 4
请注意,每一步只是上一步乘以新值。 最好不要将“阶乘”作为单独的 function:
def sequence(steps):
term = 1
sumx = 1
for i in range(2,steps):
term /= i
sumx += term
return sumx
您可以使用递归和现有的阶乘 function 构建第二个 function:
def compute_sequence(n):
num = 1/factorial(n)
if n == 1:
return num
return num + compute_sequence(n-1)
然后你只需调用: compute_sequence(n)
def factorial(n):
if n==0:
return 1
else:
return n * factorial(n-1)
def sequence(p):
sum = 0
while(p>0):
fact = factorial(p)
sum += (1/fact)
p -=1
return sum
print(sequence(3))
output:
1.6666666666666665
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.