मैं प्रोग्रामिंग में कोई पूर्व ज्ञान नहीं होने वाला पहला वर्ष सीएस छात्र हूं। मुझे Project Euler की समस्याओं से गुजरने की सिफारिश की गई थी, और first problem को हल करने में कामयाब रहा है।प्रोजेक्ट यूलर # 1। मैं जवाब 100 से गलत प्राप्त कर रहा हूं और मुझे नहीं पता क्यों (लिखित inF #)
यह बताता है कि आपको उन सभी संख्याओं को जोड़ना होगा जो 3 या 5 (या दोनों) के एकाधिक हैं।
एफ # में मेरे कोड:
let mutable n = 0
for i in 0..1000 do
if (i % 3 = 0) || (i % 5 = 0) then
n <- i + n
printfn "%A" n
जब ऐसा चलाया जाता है, मैं जवाब 234,168 जो वास्तविक जवाब के 100 से बंद है मिलता है।
कोई सुझाव क्यों?
संकेत: वास्तविक उत्तर 233168 है जो ** 1000 ** से बंद है, 100 नहीं। संकेत 2: * "** 1000 से नीचे 3 या 5 ** के सभी गुणों का योग खोजें।" * – JJJ
यदि आप प्रोजेक्ट यूलर या प्रोजेक्ट रोज़लिंड को एफ # में हल करने का प्रयास करते हैं, यदि आप अधिक बेवकूफ कोड लिखने का प्रयास करते हैं तो इससे मदद मिलती है। जैसे '[1..9 99] |> Seq.filter (मजेदार एक्स -> x% 3 = 0 || x% 5 = 0) |> Seq.sum' \\ – s952163
मैं दृढ़ता से सुझाव दूंगा कि आप बिना काम के कोड को सीखना सीखेंगे 'mutable' का उपयोग कर। 'Mutable' का उपयोग करके आप गलत दिशा में एक कदम उठा रहे हैं। जब आप पहली बार सीख रहे हों, तो मैं कहूंगा कि कोड को अपेक्षित काम करने के लिए 'mutable' का उपयोग करना ठीक है, फिर' mutable' का उपयोग न करने के लिए कोड को फिर से लिखें। 'म्यूटेबल' के बिना कोड लिखते समय आप रिफैक्टरिंग का मार्ग जा सकते हैं, लेकिन मैं सुझाव दूंगा कि आप प्रोग्राम के बारे में सोचने के तरीके को बदलने के दृष्टिकोण को ले लें, स्मृति के लिए केवल एक ढेर के बारे में सोचें, ढेर के बारे में मत सोचो याद। –