कल्पना कीजिए मैं Mathematica में एक पुनरावर्ती भाज्य परिभाषित किया है इस तरह,:गणित में, यह क्यों है कि एक पुनरावर्ती समारोह में एक प्रतिस्थापन समाप्त नहीं होता है?
Clear[fact]
fact[0] = 1
fact[n_] := n fact[n - 1]
तथ्य [10] का मूल्यांकन इस बात की पुष्टि समारोह काम करता है और समाप्त हो जाता है कि।
एक प्रमुख उदाहरण का थोड़ा सा, लेकिन यह इस प्रश्न में अपना उद्देश्य प्रदान करता है। दरअसल, मेरा प्रश्न वैसे भी सामान्य रूप से पुनरावर्ती कार्य परिभाषाओं से संबंधित है।
x fact[x-1] /. x -> 2
ओह, यह एक प्रत्यावर्तन गहराई सीमा में चलता है:
:$RecursionLimit::reclim: Recursion depth of 256 exceeded.
मैं की तरह कुछ देखने के लिए उम्मीद
मैं भी समाप्त करने के लिए निम्न लिखित परिवर्तन का मूल्यांकन करने की उम्मीद
2 fact[2-1]
या सिर्फ मूल्य
2
अद्यतन: तथ्य का एक वैकल्पिक पुनरावर्ती परिभाषाकरता काम अपेक्षा के अनुरूप:
Clear[fact]
fact[n_] := If[n < 1, 1, n fact[n - 1]]
लेकिन इस तथ्य (यमक इरादा ;-) यह भी रहस्यमय मेरे लिए बनाता है: क्यों यह होता है इतना अलग व्यवहार करते हो?
मेरा प्रश्न दोहरा है:
- यहां तक कि साथ में निर्मित और सुराग के लिए शुद्ध खोज, मैं व्याख्या नहीं कर सकते क्यों मेथेमेटिका में जोर देते हैं, जाहिरा तौर पर, प्रतीकात्मक परिणाम रखने के बजाय का मूल्यांकन
'इंटरमीडिएट' परिणाम और अच्छी तरह से समाप्त हो रहा है। एक व्यवहार्य व्याख्या कौन उद्यम करता है?
मैनेमैटिका को अपने निष्पादन के अनुसार प्रदर्शन करने के लिए कैसे समझा सकता हूं (का उपयोग कर वैकल्पिक उपयोग करने के अलावा [])?
मैं वास्तव में इस से परेशान हूं, और मुझे उम्मीद है कि कोई बाहर मेरी मदद कर सकता है।
/Twan
आह, यह समझ में आता है: गणित पहले एलएचएस का मूल्यांकन करता है। और _then_ प्रतिस्थापन करता है।और होल्ड के साथ [] आप उस 'उत्सुक' मूल्यांकन को स्थगित कर सकते हैं। महान उत्तर के लिए धन्यवाद: प्रभावी, प्रासंगिक, स्पष्ट और संक्षेप में! मेरी प्रशंसा – nanitous
@nnitous चीयर्स! यदि तीन उत्तरों में से एक आपके प्रश्न का उत्तर देता है, तो आप इसे स्वीकार्य उत्तर के रूप में चिह्नित कर सकते हैं ताकि वह शीर्ष पर दिखाई दे (और यह उत्तर देने वालों को प्रतिष्ठा देता है)। – acl
इसे इंगित करने के लिए धन्यवाद! – nanitous