我是新来的朱莉娅和学习使用地图,减少,过滤器。 对于我来说,了解它如何取代while循环变得非常困难。 对于离下面的代码,我想换成for循环地图,减少,过滤适用于循环和while循环
function addMultiplesOf3And5(N::Int)
sumOfMultiples = 0
if(N == 3)
return sumOfMultiples + N
end
for i = 3:N-1
if(i % 3 == 0 && i % 5 == 0)
continue
elseif(i % 3 == 0)
sumOfMultiples += i
elseif(i % 5 == 0)
sumOfMultiples += i
end
end
return sumOfMultiples
end
我会很感激的帮助。
更新: 这是我通过教程
function addMultiplesOf3And5(N::Int)
array = range(1,N-1)
return reduce(+, map(x -> multiples_of_3_Or_5(x), array))
end
function multiples_of_3_Or_5(n)
if(n % 3 == 0 && n % 5 == 0)
return 0
elseif(n % 3 == 0)
return n
elseif(n % 5 == 0)
return n
else
return 0
end
end
最终会后所做的:
function addMultiplesOf3And5(N::Int)
array = range(1,N-1)
return reduce(+, filter(x -> ((x%3==0)$(x%5==0)), array))
end
或许给出到目前为止你已经尝试了一些什么细节。另请参见[StackOverflow作业指导](http://meta.stackexchange.com/questions/10811/how-do-i-ask-and-answer-homework-questions) –
过去一段时间,因为我使用了地图功能,但从我记得,它将一个函数应用于列表中的每个元素。所以当然for循环也可以做到这一点。所以应该清楚如何使用for循环来代替。 – barlop