समस्या
x n . के मान की गणना करें , जहां x और n दोनों उपयोगकर्ता द्वारा रनटाइम पर दिए गए इनपुट हैं
समाधान
C प्रोग्रामिंग भाषा में पुनरावर्ती फ़ंक्शन का उपयोग करके x power n का मान उत्पन्न करने का समाधान इस प्रकार है -
x n . खोजने का तर्क नीचे उल्लेख किया गया है -
//Calling function: Xpow=power(x,n); //Called function: if (n==1) return(x); else if ( n%2 == 0) return (pow(power(x,n/2),2)); /*if n is even*/ 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 - वापसी(x)
चरण 5.2 - और अगर (n%2 ==0)
चरण 5.2.1 -रिटर्न (पाउ(पावर(x,n/2),2)); /*अगर n सम है*/
चरण 5.3 - वरना
चरण 5.3.1 -रिटर्न (एक्स * पावर (एक्स, एन -1)); /* अगर n विषम है*/
कार्यक्रम
रिकर्सिव फ़ंक्शन का उपयोग करके x power n का मान उत्पन्न करने के लिए C C प्रोग्राम निम्नलिखित है -
#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); } /*Recursive function to computer the X to power 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)); /*if n is even*/ else return (x*power(x, n-1)); /* if n is odd*/ }
आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
Enter the values of X and N: 5 4 X to the power N = 625