我有以下用python 3编写的函数
def nullstelle(f,a,b,counter=0,TOL=10 ** -4):
counter = counter + 1
if counter <= 100:
g = f((a + b)/2)
if f(a) * g <= 0:
b = (a + b)/2
else:
a = (a + b)/2
if abs(a-b) <= 2*TOL:
return (a,b)
else:
nullstelle(f,a,b,counter,TOL)
else:
return (a,b)
我的问题是,对于输入
def f(x):
return x ** 3 -2
nullstelle(f,0,3)
它不返回任何东西。我真的不明白这怎么可能。
对不起,如果这对您来说似乎是一个琐碎的问题,但是编程绝对不是我的主要兴趣领域,而且我对此几乎一无所知。
答案 0 :(得分:1)
我觉得这是重复的,但找不到很快。问题在于您没有返回递归调用的结果,因此如果必须递归,则会得到None
。将该行更改为:
return nullstelle(f,a,b,counter,TOL)