请用python帮我编写以下代码:自然常数 e 是一个约等于 2.71828182845904523536……的无理数,可用如下 公式求自然对数的底数 e 的近似值。 e=1+1/1!+1/2!+…1/n! 请使用递归函数 compute_e(n)实现计算 e 的近似值。(注:可以使用 math.factorial(n)) 编写函数 calculate2_e(n),利用 for 循环计算 e 的近似值。编写程序对两种 方法的计算结果进行比较验证,并比较两种方法的计算用时的时间,单位为秒, 精确到小数点后 6 位。(注:建议不使用 math.factorial(n)) 代码提示: def compute_e(n): if n == 1: e = ? else:
时间: 2023-06-03 14:02:42 浏览: 235
e = compute_e(n-1) + 1/math.factorial(n-1)
return e
def calculate2_e(n):
e = 1
factorial = 1
for i in range(1, n+1):
factorial *= i
e += 1/factorial
return e
import time
start_time = time.time()
e1 = compute_e(20)
end_time = time.time()
compute_time = round(end_time - start_time, 6)
start_time = time.time()
e2 = calculate2_e(20)
end_time = time.time()
loop_time = round(end_time - start_time, 6)
print("递归函数计算的 e 的近似值为:", e1)
print("循环计算的 e 的近似值为:", e2)
if e1 == e2:
print("两种方法计算结果相等")
else:
print("两种方法计算结果不相等")
print("递归函数计算用时:", compute_time, "秒")
print("循环计算用时:", loop_time, "秒")
阅读全文