Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 关于在递归调用结束时返回值的问题_Python 3.x_Recursion_Return Value - Fatal编程技术网

Python 3.x 关于在递归调用结束时返回值的问题

Python 3.x 关于在递归调用结束时返回值的问题,python-3.x,recursion,return-value,Python 3.x,Recursion,Return Value,在函数fp中,我基本上是检查连续递归调用的参数之间的差异是否小于某个数字,如果是,我想返回最后一个参数。代码如下: pX = [] for n in range(100): pX.append(1/((n+1)*(n+2))) def phi1(p): def phi2(u): sum = 0 for k in range(len(p)): sum += p[k]*(u**k) return sum

在函数fp中,我基本上是检查连续递归调用的参数之间的差异是否小于某个数字,如果是,我想返回最后一个参数。代码如下:

pX = []
for n in range(100):
    pX.append(1/((n+1)*(n+2)))

def phi1(p):
    def phi2(u):
        sum = 0
        for k in range(len(p)):
            sum += p[k]*(u**k)
        return sum
    return phi2

def fp(pt):
    temp = phi1(pX)(pt)
    print(temp)
    if(abs(pt-temp) > 0.01): 
        fp(temp)
    else:
        return temp

print(fp(0.1))
不带打印(temp)的输出为无,带打印(temp)的输出为:


期望输出为0.678。我可以知道哪里出错了吗?

当函数递归时,您没有返回任何内容。在
fp
内部调用
fp
的位置添加一个
return

def fp(pt):
    temp = phi1(pX)(pt)
    print(temp)
    if(abs(pt-temp) > 0.01): 
        return fp(temp)
    else:
        return temp
def fp(pt):
    temp = phi1(pX)(pt)
    print(temp)
    if(abs(pt-temp) > 0.01): 
        return fp(temp)
    else:
        return temp