我有这行代码使用Bisection方法查找函数的根。如何将其转换为递归函数?它需要输出函数的根。
a=float(input())
b=float(input())
c=float(input())
d=((a)**2)-c
e=((b)**2)-c
if d>0 and e>0:
print ("Error")
if d<0 and e<0:
print ("Error")
f=abs(a-b)
while f>(10**-5):
d=(a**2)-c
e=(b**2)-c
g=(a+b)/2
h=(g**2)-c
if (d*h)>=0:
a=g
else:
b=g
f=abs(a-b)
print (a,b, "or", ((a+b)/2))
提前致谢!
我试过这个:(但它只是继续返回Error和None)
a=float(input())
b=float(input())
c=float(input())
def f(x):
return (x**2)-c
def bisect(a,b,c):
if f(a)*f(b)>0:
print ("Error")
else:
midpoint=(a+b)/2
if f(midpoint)==0 and (b-a)/2<=(10**(-7)):
return midpoint
if f(a)*f(midpoint)<0 and (b-a)/2<=(10**(-7)):
b=midpoint
return bisect(a,b,c)
else:
a=midpoint
return bisect(a,b,c)
print (bisect(a,b,c))