递归打印杨辉三角

一、概述内容

杨辉三角是公元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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值