2015-07-01 47 views
-4

我得到的給定代碼的輸出是「0」,儘管我 初始化c的值爲「1」...有人可以解釋它... 爲什麼值「C」在下面的代碼中改變?爲什麼「C」的值在下面的代碼中發生變化?

#include <iostream> 

using namespace std; 

int c=1; // global initialized 'c' as 1.. 

long long f(long long n){ 

    if(n==6){ 

     return 2; 
    } 

    else{ 

     c=c+1; 

     f(n-2); 

    } 

} 
int main() 
{ 
    long long n,ans,p; 
    cin>>n; 

    ans=f((2*n)-2); 

    cout<<c; //printing out the value of 'c' 
    return 0; 
} 
+3

你在進入對於n?你使用什麼編譯器? – amza

+3

如果您不會/不能運行調試器,請嘗試在f()開頭添加'cout << c <<「」'以觀察行爲。 –

+0

@stazima取n = 3的值...... –

回答

0

,因爲C的值在下面的代碼被更改:

else{  
     c=c+1;  
     f(n-2);  
    } 
+0

它是如何發生的,爲什麼它等於「0」PLZ解釋... –

+0

這取決於在函數n中傳遞的n的值。如果你將繼續向c添加任何東西,最終它會溢出並可能變爲0. –

+0

以n = 3 ....現在會是什麼答案? @ mystic_coder –

相關問題