2016-02-23 3 views
5

एक पुनरावर्ती फ़ंक्शन myPowerFunction (int p, int n, int & currentCallNumber) का उपयोग करके पी की पीएच (दोनों पी और एन सकारात्मक पूर्णांक) की गणना करें। currentCallNumber एक संदर्भ पैरामीटर है और अब तक किए गए फ़ंक्शन कॉल की संख्या संग्रहीत करता है। myPowerFunction पी की nth शक्ति देता है।उम्मीदवार फ़ंक्शन व्यवहार्य नहीं है: 3 तर्क के लिए एल-मान की उम्मीद है

int myPowerFunction(int p, int n, int &z) 
{ 
    z++; 
    if(n==1)return p; 
    else if(n==0)return 1; 
    else if(n%2==0)return myPowerFunction(p,n/2,z)*myPowerFunction(p,n/2,z); 
    else return myPowerFunction(p,n/2,z)*myPowerFunction(p,n/2,z)*p; 
} 

int main() 
{ 
    cout << myPowerFunction(3,4,1); 
} 
+0

कृपया इस कोड को प्रारूपित करें। – erip

उत्तर

10

आपको मुख्य_प्रोग्राम में तीसरे तर्क के रूप में पास करने के लिए एक चर की आवश्यकता है। आप निरंतर एक गैर-कॉन्स्ट संदर्भ के रूप में पारित नहीं कर सकते हैं।

int count = 0; 
std::cout << myPowerFunction(3, 4, count) << 'n'; 
std::cout << count << '\n'; 
2

तीसरा पैरामीटर, एक lvalue उम्मीद ताकि आप सांख्यिक लगातार वहाँ पारित नहीं हो सकता है, तो संभव समाधान हो सकता है:

int myPowerFunction(int p, int n) 
{ 
    int z = 1; 
    return myPowerFunction(p,n,z); 
} 
:

int z = 1; 
cout<< myPowerFunction(3,4,z); 

या बेहतर एक समारोह है कि पुनरावर्ती एक कॉल बनाने के लिए

1

myPowerFunction(3,4,1) में शाब्दिक 1 गैर const संदर्भ में पारित नहीं किया जा सकता है क्योंकि यह एक प्रबल [मूल। Lval] है। आपको मान को एक चर में संग्रहीत करने की आवश्यकता है और फिर फ़ंक्शन को कॉल करते समय उस चर का उपयोग करें।

int z = 0; 
std::cout << myPowerFunction(3, 4, z); 
संबंधित मुद्दे

 संबंधित मुद्दे