递归二分法PYTHON

时间:2017-10-16 04:31:04

标签: python recursion bisection

我有这行代码使用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))

0 个答案:

没有答案