总体而言,我对编码还比较陌生,因此启动了欧拉项目,以使我的编码更进一步。花了一些时间思考如何自己解决第一个问题并尝试使用递归函数,不幸的是总是遇到同样的错误(266333)。我错过了什么?有什么重大错误值得学习吗?
原问题是:“如果我们列出所有 10 以下且是 3 或 5 的倍数的自然数,我们会得到 3、5、6 和 9。这些倍数的总和是 23。
求 1000 以下的所有 3 或 5 的倍数之和。”
def function(i, j, h, k):
if j < 1000 and k < 1000:
i = i + j
h = h + k
return function(i, j+3, h, k+5)
elif j < 1000 and k >= 1000:
i = i + j
return function(i, j+3, h, k)
elif j >= 1000 and k < 1000:
h = h + k
return function(i, j, h, k+5)
else:
print (i + h)
function(0,0,0,0)
其中i是3的倍数之和,h是5的倍数之和,j是3的倍数,k是5的倍数。
问题来源 http://projecteuler.net/problem=1