递归算法:
#include <iostream>
#define N 13
using namespace std ;
int combi(int i , int j)
{
if(1==i)
{
return 1 ;
}
if(1==j || j==i)
{
return 1 ;
}
return combi(i-1,j-1)+combi(i-1,j) ;
}
int main()
{
for(int i=1 ; i<=N ; i++)
{
for(int j=1 ; j<=N-i ; j++)
{
printf(" ") ;
}
for( j=1 ; j<=i ; j++)
{
printf("%3d " ,combi(i,j)) ;
}
cout << endl ;
}
return 0 ;
}
非递归算法:(转载)
#include<stdio.h>
#define N 12
int combi(int n,int r)
{
int i ;
int p=1 ;
for(i=1;i<=r;i++)
p=p*(n-i+1)/i;
return p ;
}
int main()
{
int n,r,t;
for(n=0;n<=N;n++)
{
for(r=0;r<=n;r++)
{
int i;/* 排版设定开始*/
if(r==0)
{
for(i=0;i<=(N-n);i++)
printf(" ");
}
else
{
printf(" ");
}/* 排版设定结束*/
printf("%3d",combi(n,r));
}
printf("\n");
}
return 0 ;
}