计算多项式前n项的和 python

编程计算以下多项式前n项的和,其中n为正整数,由input()输入,不考虑输入错误,结果保留四位小数。
具体如图所示

img


def function(num):
    plus = 0
    data = num
    while num > 0:
        plus += ((-1) ** (num - 1)) * ((num + 1) / (num * (2 * num + 1)))
        num -= 1
    string = "多项式前{}项的和是{:.4f}".format(data, plus)
    return string


if __name__ == '__main__':
    n = eval(input("输入n:"))
    res = function(n)
    print(res)

img

img


给你做出来了


n = int(input('n='))
s = 0
f = 1
for i in range(1, n+1):
    s = s + f * (i+1)/(i*(2*i+1))
    f = f * -1
print("S=", round(s, 4))

递归方式:


def func(n: int):
    if n == 1:
        return 2 / 3
    return func(n - 1) + pow(-1, n - 1) * (n + 1) / (n * (2 * n + 1))


if __name__ == "__main__":
    n_input = eval(input("请输入数字:"))
    result = func(n_input)
    print('多项式前5项的和是{:.4f}'.format(result))

因为单项和前后项关系不大,其实不适合用递归来处理,直接用循环更好。
其实单项可以用一个函数来求得其对应值,例如:

def  getN(n:int):
    div=1
    if n%2==0:
        div=-1
    return div*float(n+1)/(n*(2*n+1))

if __name__ == "__main__":
    n_input = int(input("请输入数字:"))
    sum=0
    for i in range(1,n_input+1):
        sum=sum+getN(i)
    print('多项式前5项的和是{:.4f}'.format(sum))
m = int(input())

s = 0  # 初始化累和变量

for n in range(1,m+1):
    s += (-1)**(n-1) * (n+1) / ( n*(2*n+1) )
# 循环变量用n, 上面这个式子照抄题目中的即可
    
print(round(s, 4))
##########
# 基本思路
# 已经给出了通项,只要把每一项都计算出来,再求和就可以了
##########


# 计算一项
def getOneExpression(n):
    return (-1)**(n-1) * (n+1)/(n*(2*n+1))

# n项求和

N = int(input()) # 获得输入的n
Sum = 0

for n in range(1,N+1):  # 1 2 3 ... N
    # 求和
    Sum += getOneExpression(n)

# 保留四位小数
Sum = round(Sum,4)
print(Sum)

100个python算法超详细讲解:多项式之和
https://blog.csdn.net/tysonchiu/article/details/124956886?spm=1005.2026.3001.5635&utm_medium=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-12-124956886-ask-7733403.pc_feed_download_top3ask&depth_1-utm_source=distribute.pc_relevant_ask_down.none-task-blog-2~default~OPENSEARCH~Rate-12-124956886-ask-7733403.pc_feed_download_top3ask