// Combination2.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdio.h" #include "iostream" using namespace std; int Combination_recursion(int n,int k); int _tmain(int argc, _TCHAR* argv[]) { int n,k; cin>>n>>k; cout<<"recursion:"<<endl<<Combination_recursion(n,k)<<endl; system("pause"); return 0; } int Combination_recursion(int n,int k) { // C(n,n)=1, C(n,0)=1 0!=1; if (n==k||k==0) { return 1; } else { return Combination_recursion(n-1,k)+Combination_recursion(n-1,k-1); } }
// Combination.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "stdio.h" #include "iostream" using namespace std; int factorial_iteration(int x); double Combination_iteration(int n,int k); int factorial_recursion(int x); double Combination_recursion(int n,int k); int _tmain(int argc, _TCHAR* argv[]) { int n,k; cin>>n>>k; cout<<"iteration:"<<endl; int result=Combination_iteration(n,k); cout<<result<<endl; cout<<"recursion:"<<endl; result=Combination_recursion(n,k); cout<<result<<endl; system("pause"); return 0; } double Combination_iteration(int n,int k) { int n_fact=factorial_iteration(n); int k_fact=factorial_iteration(k); int n_k_fact=factorial_iteration(n-k); double result=n_fact/n_k_fact/k_fact; return result; } double Combination_recursion(int n,int k) { int n_fact=factorial_recursion(n); int k_fact=factorial_recursion(k); int n_k_fact=factorial_recursion(n-k); double result=n_fact/n_k_fact/k_fact; return result; } int factorial_iteration(int x) { if (x==0) { return 1; } int result=1; while(x>0) { result*=x; x--; } return result; } int factorial_recursion(int x) { if (x==0||x==1) { return 1; } else { return x*factorial_recursion(--x); } }