为什么此函数不返回任何内容?

时间:2018-09-02 17:02:20

标签: python python-3.x

我有以下用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)

它不返回任何东西。我真的不明白这怎么可能。

对不起,如果这对您来说似乎是一个琐碎的问题,但是编程绝对不是我的主要兴趣领域,而且我对此几乎一无所知。

1 个答案:

答案 0 :(得分:1)

我觉得这是重复的,但找不到很快。问题在于您没有返回递归调用的结果,因此如果必须递归,则会得到None。将该行更改为:

return nullstelle(f,a,b,counter,TOL)