gpt4 book ai didi

python - 代码不会停止运行。看起来微不足道,但我无法弄清楚

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:52 24 4
gpt4 key购买 nike

这是我用于近似 exp(x) 的代码。我知道可能有阶乘函数,但我想确保自己可以创建一个 :)

def factorial(n):
"""Computes factorial of a number n"""
fac = n
while n != 1:
fac = fac * (n-1)
n -= 1
return fac


def exp_x_approx(x, n):
"""estimates exp(x) using a taylor series with n+1 terms"""
s = 0
for i in range(0, n+1):
s = s + ((x**i)/factorial(i))
print (s)
return s

print(exp_x_approx(2,8))

没有错误,直到我 ^c 停止它运行,此时它显示:

File "/Users/JPagz95/Documents/exp_x_approx.py", line 18, in <module>
print(exp_x_approx(2,8))
File "/Users/JPagz95/Documents/exp_x_approx.py", line 13, in exp_x_approx
s = s + ((x**i)/factorial(i))
File "/Users/JPagz95/Documents/exp_x_approx.py", line 5, in factorial
fac = fac * (n-1)
KeyboardInterrupt

我相信它会无限循环,但我不明白为什么。任何帮助将不胜感激!

最佳答案

在你的函数中

def factorial(n):
"""Computes factorial of a number n"""
fac = n
while n != 1:
fac = fac * (n-1)
n -= 1
return fac

你可以这样修改

def factorial(n):
if n < 0:
return "some error info."
fac = 1
while n>=1:
fac = fac * n
n -= 1
return fac

您应该将初始条件设置为 fac=1 并将终止条件设置为 n>=1 而不是 n!=1。想想如果我给一个数字 -2 会怎么样?

关于python - 代码不会停止运行。看起来微不足道,但我无法弄清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35327791/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com