#include <iostream>
using namespace std;
int power(int a, int b); // Subfunction to calculate a^b
int fact(int c); // Subfunction to calculate factorial
int main() {
int x=0;
for(int i=1 ; i<=20 ; i )
x = fact(i) / power (i,i); // needs to calculate like [(1! / 1^1) (2! / 2^2) (3! / 3^3) ...... (20! / 20^20) // assigned x and sum it with counter to calculate final result
cout<<x;
return 0;
}
int power(int a, int b) { // a^b subfunction
unsigned long long int multip=1; // written the biggest type just in case (idk if i need it)
for (int i=1; i<=b; i ) {
multip*=a;
}
return multip;
}
int fact(int c) { // factorial subfunction
unsigned long long int multip=1;
for (int i=c ; i>=1 ; i--) {
multip*=i;
}
return multip;
}
我試圖計算[(1! / 1^1) (2! / 2^2) ... (20! / 20^20)]但不知何故程式根本不起作用。輸出
如果錯誤很明顯,我很抱歉我已經嘗試了很長時間,現在不能多想。我將以新鮮的頭腦回傳回復。祝你有美好的一天。
uj5u.com熱心網友回復:
你的型別有一些嚴重的問題:
int power(...);
int fact(...);
=> 這應該是long long
。
最重要的是,您正在進行整數除法,而您需要浮點除法:
fact(i) / power (i,i);
... 應該:
((double) fact(i)) / power (i,i);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/537604.html
標籤:C 功能阶乘求幂