繁体   English   中英

Python, function 用于算术序列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM