मैं Real-World Functional Programming पुस्तक के माध्यम से काम कर रहा हूं, और मैंने किताब के उदाहरण पढ़ने से पहले पूंछ रिकर्सन के अपने उदाहरण के साथ आने की कोशिश की (लिस्टिंग 10.2, पृष्ठ 265)। पुस्तक का उदाहरण काम करता है; मेरा एक ढेर अतिप्रवाह का कारण बनता है।यह पूंछ-पुनरावर्ती क्यों नहीं है?
मुझे पता चला है कि मैं एक ट्यूपल तर्क का उपयोग करता हूं या a + accum
की पूर्व-गणना करता हूं तो मेरा काम करेगा। मैं समझना चाहता हूं क्यों।
let rnd = new System.Random()
let test2 = List.init 1000000 (fun _ -> rnd.Next(-50, 51))
let rec sum2 list accum =
match list with
| [] -> accum
| a::b -> sum2 b a + accum
let result = sum2 test2 0
printfn "%d" result
Aaargh के बजाय
पढ़ रही है! आप और @ sepp2k स्पॉट-ऑन हैं। यह मूल्यांकन का आदेश है। कोष्ठक इसे ठीक करते हैं। – TrueWill
मैं आमतौर पर सबकुछ खत्म कर देता हूं, जैसा कि मैंने पाया है कि यह कम बुराई है। हाँ आम lisp !!! – gpeche