【问题标题】:Question about returning a value at the end of a recursive call关于在递归调用结束时返回值的问题
【发布时间】:2019-10-29 04:06:20
【问题描述】:

在函数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))

没有print(temp)的输出是none,有print(temp)的输出是:

0.5175535907956329
0.619369692490415
0.6561427816319753
0.6714277125785142
0.6781654579021761
None

所需的输出是 0.678。我可以知道我哪里出错了吗?

【问题讨论】:

    标签: python-3.x recursion return-value


    【解决方案1】:

    当您的函数递归时,您不会返回任何内容。将return 添加到fpfp 中被调用的位置:

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

    【讨论】:

      猜你喜欢
      • 2010-12-08
      • 1970-01-01
      • 2022-12-08
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 2015-01-13
      • 2020-09-24
      相关资源
      最近更新 更多