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