迭代与阶乘1
// 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);
}
}

浙公网安备 33010602011771号