python - 为什么我的递归不起作用?警告 : Project Euler spoiler

标签 python algorithm recursion

我不太清楚为什么我的递归算法不起作用。我收到以下错误,但我想在我看来我有一个终止点。我知道我忘记了一些简单的事情。

运行时错误:超出最大递归深度

def triplet(n):
    a = (2*n) +1
    b = (2*n)*(n+1)
    c = (2*n)*(n+1) +1

    if a+b+c == 1000:
        return a*b*c
    elif a+b+c > 1000:
        return 'no triplet found'
    else:
        return triplet(n+1)

print triplet(1)

最佳答案

您正在使用 Euclid 方法的变体来生成三元组。但是,它不会生成所有可能的三元组,因此它显然不会生成解决您的问题所需的三元组。

事实上,没有生成所有毕达哥拉斯三元组的通用公式。您需要通过分析找到解决方案或强制解决。

关于python - 为什么我的递归不起作用?警告 : Project Euler spoiler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15884356/

相关文章:

java - 在涉及毕达哥拉斯三元组和集合的算法中找不到我的错误

SQL Server 将分层 CTE 函数重写为常规 Select

python - 递归函数值生成器的多重处理

python - 以编程方式获取使用 Facebook Graph API 的访问 token

python - 从 scikit-learn 中的截断 SVD 中获取 U、Sigma、V* 矩阵

algorithm - 请建议一种算法来比较格雷码数

algorithm - 证明随机生成的数字是均匀分布的

python - 如何使用 python (suds) 对 XML 进行签名

python - Emacs:如何阻止我的 Python 进程被 Ctrl-C 杀死

java - 打印所有验证括号,这里的递归如何工作?