def bisection(f,a,b): #递归二分法求零点
while(abs(f((a+b)/2) - 0) > 0.000001): #当函数值与零点的差距小于8个数量级时,跳出循环
if f((a+b)/2) < 0: #a,b中点的函数值小于0,则将二分区间限制为((a+b)/2, b)
a = (a+b)/2
return bisection(f, a, b) #递归调用bisection函数
if f((a+b)/2) > 0: #a,b中点的函数值大于0,则将二分区间限制为(a, (a+b)/2)
b = (a+b)/2
return bisection(f, a, b) #递归调用bisection函数
return (a+b)/2
递归调用函数时,在调用函数前要有“return”,否则函数执行时间巨长!
![](https://img-home.csdnimg.cn/images/20240711042549.png)