2014-02-22 48 views
1

對C++很新穎。製作這個階乘程序,並且以某種方式我已經完成了代碼並構建了一些東西,但它返回的值始終是正確值的10倍。例如,5的階乘是在1200而不是120時計算的,3的階乘是在60時計算的。爲什麼額外的單位?做奇怪的數學的C++析因程序

這是代碼:

#include <iostream> 

using namespace std; 

int main() { 

    int i, j, num; 

    cout << "Compute factorial: " << endl; 

    cin >> num; 

    for (i=1; i<num; i++){ 

     for (j=num; j>1; j--) 

      num *=(j-i); 

     cout << num; 
    } 

    return 0; 
} 
+0

以下任何解決方案是否解決了您的問題? –

回答

0
for (i=1; i<num; i++){ 

    num *=i; 
} 

這應該足以

0

我想你是不是for循環非常清楚,並注意與NUM 的變化嘗試這一塊的代碼,希望它會幫助

#include <iostream> 

using namespace std; 

int main() { 

int i, j, num; 

cout << "Compute factorial: " << endl; 

cin >> num; 
int output_num = 1; 
for (i=1; i<=num; i++){ 

     output_num *= i; 

} 
cout << output_num; 

return 0; 
} 
1

所有你需要的是一個循環。這種方式應該更簡單。

#include <iostream> 

using namespace std; 

int main() { 

    int i, j=1, num; 

    cout << "Compute factorial: " << endl; 

    cin >> num; 

    for (i=num; i>0; i--){ 
     j *= i; 
    } 

    cout << j << endl; 
} 
0

使用此代碼:

#include<iostream> 
using namespace std; 
int main() 
{ 
int num,fact=1; 
cout<<" Enter the no. to find its factorial:"; 
cin>>num; 
for(int a=1;a<=num;a++) 
{ 
fact=fact*a; 
} 
cout<<"Factorial of a given Number is ="<<fact<<endl; 
return 0; 
} 

輸出:

enter image description here

0

使用兩個循環計算階乘是非常複雜的.....你不需要它。 試試這個

#include <iostream> 

using namespace std; 

int main() { 

    int i,num; 
    cout << "Compute factorial: " << endl; 
    cin >> num; 
    for(i=num;i>1;--i) 
     num*=(i-1); 

     cout << num; 

    return 0; 
}