मुझे पता है कि यह कुछ हद तक समस्या का विपरीत है जब लोग एक स्टैक ओवरफ़्लो समस्या के बारे में पूछते हैं, लेकिन यदि मैं कोई फ़ंक्शन बनाता हूं और इसे निम्नानुसार कॉल करता हूं, तो मुझे कभी भी कोई त्रुटि नहीं मिलती है, और एप्लिकेशन बस कोर को पीसता है मेरे CPU के मैं जब तक यह बलपूर्वक-बाहर निकलने:अनंत रिकर्सन ने एफ # में एक स्टैक ओवरफ़्लो अपवाद क्यों नहीं मारा?
let rec recursionTest (x: uint64) =
recursionTest (x + 1UL)
recursionTest 0UL
इस तरह से मैं कभी कभी मेरे कोड में एक ब्रेकपाइंट रख सकते हैं:
let rec recursionTest x =
recursionTest x
recursionTest 1
बेशक
मैं तो यह वास्तव में कुछ इस तरह करता है यह पता बदल सकते हैं और देखें कि एक्स का मान तेजी से बढ़ रहा है, लेकिन यह अभी भी शिकायत नहीं करता है। एफ # असीमित रिकर्सन नहीं है?
धन्यवाद, यह एक अनियंत्रित प्रश्न भी समझाया गया है कि क्यों वीएस कॉल स्टैक विंडो में और कॉल नहीं दिखा रहा था। – Amazingant
असल में मैं इस मामले में विश्वास करता हूं कि एफ # कंपाइलर वास्तव में कोड को एक लूप में परिवर्तित करेगा - वास्तव में संकलित कोड में कोई रिकर्सन नहीं है। –