编写一个程序,通过使用公式来估计数学常数 e 的值 [注意:您的程序可以在对 10 项求和后停止。]
e = 1 + 1/1!+ 1/2!+ 1/3!+ ...
我是编程语言的新手,正在尝试自己学习 Python。这个问题之前已经被问过和回答过,但我正在寻找一个没有任何函数或模块的解决方案,我只想使用 while 或 for 循环。
编辑:这是我为计算阶乘而编写的代码:
n = 0
factorial = 1
n = raw_input( "Enter a positive integer: ")
n = int(n)
while n < 0:
print "Enter a POSITIVE integer: "
backup = n
backup = int(backup)
while n != 0:
factorial *= n
n -= 1
print "%d!= %d" % (backup, factorial)
这对你们大多数人来说可能很有趣,但这是我为这个问题编写的代码,但最终出现了语法错误:
accuracy = 1
factorial = 1
counter = 1
e = 1.0
accuracy = raw_input( "Enter desired accuracy of e: ")
accuracy = int (accuracy)
while (counter <= (accuracy - 1))
factorial = factorial * counter
e = e + ( 1 / float(factorial))
counter += 1
print "Constant e is: ", e
您的第一步是编写阶乘函数。这可以递归完成或使用 for 循环:
def factorial(n):
return 1 if n < 2 else n * factorial(n-1)
或者:
def factorial(n):
x = 1
for i in range(2, n+1):
x *= i
return x
然后为了计算,e
我们可以再次使用递归或 for 循环。此函数采用一个参数,该参数指示它应该评估公式中的多少项(因此您应该10
在您的情况下调用)。
def calc_e(t):
if not t:
return 0
else:
return 1 / factorial(t-1) + calc_e(t-1)
或者:
def calc_e(t):
s = 0
for i in range(t):
s += 1 / factorial(i)
return s
他们都工作:
>>> calc_e(1)
1.0
>>> calc_e(2)
2.0
>>> calc_e(3)
2.5
>>> calc_e(4)
2.6666666666666665
>>> calc_e(5)
2.708333333333333
>>> calc_e(10)
2.7182815255731922
>>> calc_e(20)
2.7182818284590455
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句