C++ HW4-4 HW4-5 for WallPower
排列組合中,從n個相異物取r個物件記做 C(n,r),其值可用數學遞迴定義如右:C(n,r) = C(n-1,r) +
C(n-1,r-1)。以此定義寫出一C++程式,輸入正整數n,r的值求以此定義寫出一C++程式求C(n,r)=?
參考輸出如下圖。
#includeusing namespace std; int combination(int n, int r) { if (n == r || r == 0) return 1; else return combination(n - 1, r) + combination(n - 1, r - 1); } int main() { int n, r; cout << "計算組合數C,請輸入n、r:"; cin >> n >> r; cout << "C(" << n << "," << r << ") = " << combination(n, r) << endl; system("pause"); return 0; }
承上題,以函數呼叫與迴圈方式寫出C++程式。
數學公式:C(n,r) = n! / ((n-r)! * r!)
迴圈參考解答。
數學公式:C(n,r) = n! / ((n-r)! * r!)
迴圈參考解答。
#includeusing namespace std; int combination(int n, int r) { int total1 = 1, total2 = 1, total3 = 1; for (int i = 1; i <= n; i++) total1 *= i; for (int i = 1; i <= n - r; i++) total2 *= i; for (int i = 1; i <= r; i++) total3 *= i; return total1 / (total2 * total3); } int main() { int n, r; cout << "計算組合數C,請輸入n、r:"; cin >> n >> r; cout << "C(" << n << "," << r << ") = " << combination(n, r) << endl; system("pause"); return 0; }
留言
張貼留言