我是新來的朱莉婭和學習使用地圖,減少,過濾器。 對於我來說,瞭解它如何取代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