पुनरावर्ती द्वारा घातांक की गणना करें

पुनरावर्ती द्वारा घातांक की गणना करें

मुद्दा

कृपया, मैं इस एल्गोरिथ्म में मौजूद त्रुटि को जानना चाहूंगा। जानकारी के लिए: यह एल्गोरिथ्म पुनरावर्तन द्वारा घातीय विधि की गणना करना है।

 #include #include #include int factoriel (int n, int i, int fact) {if (i = n + 1) {fact = 1; वापसी तथ्य; } और {तथ्य = तथ्य * मैं; i ++; factoriel (एन, मैं, वास्तव); }} फ्लोट puissance (int n, int i, float x, float p) {if (i = n + 1) {p = 1; वापसी पी; } और {p = p * x; i ++; प्यूसेंस (एन, मैं, एक्स, पी); }} int main () {const float EPS = 0.0001; int i, n, fact; फ्लोट एक्स, पी, एस, टी; प्रिंटफ ("डोनर एक्स:"); स्कैनफ़ ("% f", & x); एन = 0; टी = 1; रों = 0; तथ्य = 1; पी = 1; जबकि (फर्श (T)> EPS) {T = puissance (n, 1, x, p) / कारक (n, 1, तथ्य); एस = रों + T; एन = n + 1; } प्रिंटफ ("ऍक्स्प (% f) =% f \ n", x, s); } 

उपाय

कई त्रुटियां।

मैं तथ्य और शक्ति की गणना के लिए पुनरावृत्ति का उपयोग करने की बेरुखी से गुजरता हूं, मुझे लगता है कि आपने अनुरोध किया था।

सबसे पहले, विस्तृत वाक्यविन्यास अल्ट्रा-क्लासिक: परीक्षण == है, = नहीं। आपके दो कार्यों में यदि (i == n +1) होना चाहिए

इससे भी बदतर, दोनों कार्यों के परीक्षण में, कोई वापसी नहीं है। तो आपका फ़ंक्शन कुछ भी नहीं देता है, यह एक यादृच्छिक मान ले सकता है। मुझे लगता है कि यह विचार था कि पहला रिटर्न फैक्टरियल (एन, आई, फैक्ट);

लेकिन इस सुधार कारक और थाय पावर से भी काम नहीं चलेगा। आप ठीक गणना करते हैं, फिर चरण n +1 पर लौट आते हैं, आप परिणाम को 1 पर मजबूर कर सकते हैं!

अंत में, आपके हाथ में, आपके पास प्रत्येक लूप पर p और तथ्य को फिर से संगठित करना है।

मेरी राय में, 1 से n +1 तक बढ़ने के बजाय मूल्यों (एन से 1) को कम करके कार्य करने के लिए फैक्टरियल फ़ंक्शन और शक्ति लिखना बेहतर है। फ़ंक्शन को केवल एक पैरामीटर की आवश्यकता होती है, यह बहुत सरल है (नहीं, तथ्य, या p)

ध्यान दें

ले पेरे द्वारा हल करें

पिछला लेख अगला लेख

शीर्ष युक्तियाँ