递归问题求解
以下函数用于可用于求方程的近似解,其中参数f为一个输入、输出均为数字的函数def solve(f, x1, x2):
mid = (x1 + x2) / 2
if f(mid) == 0 or abs(x1 - x2) < 1e-8:
return # <A>
elif f(mid) * f(x1) > 0:
return # <B>
else:
return # <C>
如何补全该函数使其可以正常使用?
要补全这个函数,您需要在每个返回语句中递归地调用 solve 函数。这是一个使用二分法求解方程的函数。函数 f 是一个一元方程,x1 和 x2 分别是搜索区间的上下限。下面是补全后的代码:
def solve(f, x1, x2):
mid = (x1 + x2) / 2
if f(mid) == 0 or abs(x1 - x2) < 1e-8:
return mid
elif f(mid) * f(x1) > 0:
return solve(f, mid, x2)
else:
return solve(f, x1, mid)
在这个补全的版本中,当满足某个终止条件时(f(mid) == 0 或者 abs(x1 - x2) < 1e-8),函数将返回当前计算的中点 mid。否则,函数将在适当的子区间上递归调用自身。
页:
[1]