Python 3.x 关于在递归调用结束时返回值的问题
在函数fp中,我基本上是检查连续递归调用的参数之间的差异是否小于某个数字,如果是,我想返回最后一个参数。代码如下: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
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