递归算法:
#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 ; }