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


 

 

posted @ 2013-05-18 19:53  javawebsoa  Views(185)  Comments(0Edit  收藏  举报