一、概述内容
杨辉三角是公元1261年,我国宋代数学家杨辉在其著作《详解九章算法》中给出的一个用数字排列起来的三角形阵。由于杨辉在书中引用了贾宪著的《开方作法本源》和“增乘开方法”,因此这个三角形也称“贾宪三角”。在欧洲,这个三角形叫帕斯卡三角形,是帕斯卡在1654年研究出来的,比杨辉晚了近400年时间。
二、发展历程
北宋人贾宪约1050年首先使用”贾宪三角”进行高次开方运算, 南宋数学家杨辉在《详解九章算法》(1261年)中,保存了一张宝贵图形——“开方作法本源”图。根据杨辉自注说,这个图“出《释锁算术》,贾宪用此术”。宋元时代的数学家求数字高次方程正根的方法叫做“开方“,又叫做“释锁”。很可能在杨辉之前,已经有一些数学家采用此图来研究开方术,其中以贾宪为最早。因此,我们应该把这个具有世界意义的重大贡献归功于贾宪和杨辉二人。贾宪采用得最早,但贾宪的著作可惜早已失传,全靠杨辉在《详解九章算法》里把这份珍贵的遗产保存了下来,并加以发扬光大,广泛应用。“开法作法本源” 图又叫做“乘方求廉图”,我们现在采取华罗庚教授的意见,称它为“杨辉三角”。
三、代码
#include <stdio.h>
#include <stdlib.h>
int yanghui(int row,int col) //传入杨辉三角的各个数字的位置
{
if(col==1||row==col){ //行列相等以及列唯一则为1
return 1;
}
return yanghui(row-1,col-1)+yanghui(row-1,col);
//递归输出值
}
int main(int argc,char **argv) //输入要打印的行数
{
if(argc!=2){ //参数不正确
printf("param error!\n");
exit(0);
}
int row=atoi(argv[1]); //行号字符串形转整形
for(int i=1;i<=row;i++){
for(int j=1;j<=i;j++)
{
printf("%-8d",yanghui(i,j));
}
putchar('\n'); //每打印完一行换行
}
return 0;
}