समस्या
xn का मान गणना करें, जहां x और n दोनों उपयोगकर्ता द्वारा रनटाइम पर दिए गए इनपुट हैं।
समाधान
C प्रोग्रामिंग भाषा में रिकर्सिव फंक्शन का उपयोग करके x की n घात का मान उत्पन्न करने का समाधान निम्नानुसार है:
xn ज्ञात करने का तर्क नीचे दिया गया है:
//कॉलिंग फंक्शन: Xpow=power(x,n); //कॉल्ड फंक्शन: if (n==1) return(x); else if ( n%2 == 0) return (pow(power(x,n/2),2)); /*यदि n सम है*/ else return (x*power(x, n-1));
एल्गोरिदम
रिकर्सिव फंक्शन का उपयोग करके x की n घात का मान उत्पन्न करने के लिए नीचे दिए गए एल्गोरिदम का संदर्भ लें।
चरण 1 - लॉन्ग इंट वेरिएबल्स पढ़ें
चरण 2 - फंक्शन प्रोटोटाइप घोषित करें
चरण 3 - फंक्शन कॉल करें
Xpown=power(x,n) goto step 5
चरण 4 - xpown प्रिंट करें
चरण 5 - कॉल्ड फंक्शन
चरण 5.1 - यदि (n==1)
चरण 5.1.1 - return(x)
चरण 5.2 - अन्यथा यदि (n%2 == 0)
चरण 5.2.1 - Return (pow(power(x,n/2),2)); /*यदि n सम है*/
चरण 5.3 - अन्यथा
चरण 5.3.1 - Return (x*power (x, n-1)); /*यदि n विषम है*/
प्रोग्राम
निम्नलिखित C प्रोग्राम रिकर्सिव फंक्शन का उपयोग करके x की n घात का मान उत्पन्न करने के लिए है:
#include <stdio.h> #include <math.h> void main(){ long int x, n, xpown; long int power(int x, int n); printf("Enter the values of X and N: \n"); scanf("%ld %ld", &x, &n); xpown = power (x, n); printf("X to the power N = %ld\n",xpown); } /*रिकर्सिव फंक्शन X की N घात की गणना करने के लिए*/ long int power(int x, int n){ if (n==1) return(x); else if ( n%2 == 0) return (pow(power(x,n/2),2)); /*यदि n सम है*/ else return (x*power(x, n-1)); /*यदि n विषम है*/ }आउटपुट
जब उपरोक्त प्रोग्राम निष्पादित होता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है:
Enter the values of X and N: 5 4 X to the power N = 625