2017-08-27 38 views
-5
#include<iostream> 
using namespace std; 

int main() 
{ 
    int fact; 
    for(int i=1; i<=fact; i++) 
    { 
    fact = fact*i; 
    } 
    cout<<fact; 
} 

輸出:垃圾值。階乘使用forree循環給出垃圾值

請任何人告訴我爲什麼使用增量for循環給我這個,但不是循環遞減。

+4

'fact'心不是初始化這意味着它的值是不確定的。 –

+1

'fact'的初始值是多少? –

+4

當你解決這個問題時,考慮使用一個不斷增加的變量作爲循環中的限制。 –

回答

3

你可以做兩件事情,

1)如果您希望自己的代碼,你必須初始化YOUT值事實與價值1:

int fact = 1; 

2)有一個很簡單的一個班輪這「事實」 -stuff。如果我在某個時候需要它,我經常自己使用它。

int factorial(int n) 
{ 
    return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n; 
} 
2
#include<iostream> 
using namespace std; 
int main() 
{ 
     int fact,z=1; 
     cin>>fact; 
     for(int i=2; i<=fact; i++) 
     { 
     z= z*i; //use another variable using fact here will lead to a possible infinite loop 
     } 
     cout<<z<<"\n"; 
}