के साथ रिकर्सिव फ़ंक्शन मेरे पास एक स्थैतिक चर "गणना" के साथ एक पुनरावर्ती कार्य है। फ़ंक्शन वृद्धि क्रमशः गिनती होती है और चूंकि इसमें फ़ाइल स्कोप होता है, जब मैं दूसरी बार foo() को कॉल करता हूं, तो गिनती अभी भी 5 के बराबर होती है। क्या दूसरी बार foo() को कॉल करने से पहले 0 पर गिनती रीसेट करने की कोई तकनीक है?स्थैतिक चर
असल में, मैं गिनती नहीं चाहता कि फ़ाइल का दायरा हो लेकिन मैं इसे विभिन्न पुनरावृत्तियों के माध्यम से अपना मूल्य बरकरार रखना चाहता हूं।
एक तरीका मैं ऐसा करने के बारे में सोच सकता हूं foo() को foo() में प्रारंभ करने के लिए एक तर्क है। जैसे foo (int count)। लेकिन क्या कोई और तरीका है?
#include <iostream>
using namespace std;
void foo()
{
static int count = 0;
if(count<5)
{
count++;
cout<<count<<endl;
foo();
}
else
{
cout<<"count > 5"<<endl;
}
}
int main()
{
foo(); //increment count from 0 to 5
foo(); //count is already at 5
return 0;
}
क्या कोई विशेष कारण है कि आप इसे पैरामीटर के रूप में पास करने के बजाय स्थिर गणना का उपयोग कर रहे हैं? इस तरह के पुनरावर्ती कार्यों में स्थैतिक चर का उपयोग करना सामान्य रूप से एक बुरा विचार माना जाता है, ठीक इसी तरह की चीजों के कारण। –
स्थिर के लिए कोई विशेष कारण नहीं है। नीचे दिए गए उत्तरों से, मैं इस बात से सहमत हूं कि इस बारे में जाने का सबसे अच्छा तरीका एक तर्क होगा। – Steve