杨辉三角.java

杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合 。

  

 

代码

public static List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret=new ArrayList<>();
        List<Integer> list=new ArrayList<>();
        list.add(1);
        ret.add(list);
        for (int i = 1; i < numRows; i++) {
            List<Integer> curList=new ArrayList<>();
            curList.add(1);
            for (int j = 1; j < i; j++) {
                List<Integer>  newList=ret.get(i-1);
                curList.add(newList.get(j)+newList.get(j-1));
            }
            curList.add(1);
            ret.add(curList);
        }
        return ret;
    }

list为我们的每一行的具体数字,定义一个顺序表来实现为List<Integer>类型,然后一共有numrows行,每一行都是一个list,也就是List<List<Integer>>类型,我们可以知道第一行第只有一个数字所以我们先新增也就是add一个1在list的第一个位置,然后把第一行add到ret里。从第二行开始循环,先new一个新的curlist,每一行第一个和最后一个都是1,因此我们先add两个1,再在两个1中间写一个循环用来算两个一中间的数字。我们可以知道,这个数字等于上一行和他相同列数和他前一列数字之和,所以我们要拿到上一行,通过从ret中用get方法实现,拿到引用后,两个值相加,在add到curlist中,最后给ret也新增一下,就拿到了结果。

运行结果

例如:输入是5。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿拉蕾wjh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值