【算法】 杨辉三角

        /// <summary>
        /// 递归方式     /// 思路:当前楼层是首尾为1,中间为上一楼层各相邻2元素相加之和的集合        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static List<int> Yh(int n)
        {
            CheckInt(n);         var list = new List<int> { 1 }; // 第一楼层
            if (n == 1)
            {
                return list;
            }
            var lastList = Yh(n - 1); // 用递归的方式获取上一楼层的集合for (int i = 0; i < lastList.Count - 1; i++)
            {
                list.Add(lastList[i] + lastList[i + 1]); //中间加入上一楼层各相邻元素相加之和
            }
            list.Add(1); // 末尾加入1
            return list;
        }

        /// <summary>
        /// 循环方式
        /// </summary>
        /// <param name="n"></param>
        /// <returns></returns>
        public static List<int> YhFor(int n)
        {
            CheckInt(n);
            var list = new List<int> { 1 }; // 第一楼层
            for (int i = 1; i < n; i++) // 遍历楼层数
            {
                var temp = new List<int> { 1 }; // 当前楼层的缓存
                for (int j = 0; j < list.Count - 1; j++)
                {
                    temp.Add(list[j] + list[j + 1]); //中间加入上一楼层各相邻元素相加之和
                }
                temp.Add(1); // 末尾加入1
                list = temp; // 保存缓存数据
            }
            return list;
        }
时间: 2024-10-31 12:14:33

【算法】 杨辉三角的相关文章

每日算法 ---- 杨辉三角

杨辉三角 每个数等于它上方两数之和. 每行数字左右对称,由1开始逐渐变大. 第n行的数字有n项. 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数. 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一. 每个数字等于上一行的左右两个数字之和.可用此性质写出整个杨辉三角.即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一.即 C(n+1,i)=C(n,i)+C(n,i-1). (a+b)n的展开式中的各项系数依次

算法——杨辉三角

//考验基础数组与循环知识 #include <iostream>using namespace std; int main(){ int a[35][35]; int n; cin>>n; for(int i=1;i<=n;i++)//最左与最右 {a[i][1]=1;        //最左a[i][i]=1;         //最右 } for(int i=3;i<=n;++i)//一二行已赋值,从第三开始 for(int j=2;j<i;++j) {a[

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

【LeetCode-面试算法经典-Java实现】【119-Pascal&#39;s Triangle II(帕斯卡三角形(杨辉三角)II)】

[119-Pascal's Triangle II(帕斯卡三角形(杨辉三角)II)] [LeetCode-面试算法经典-Java实现][所有题目目录索引] 原题 Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3,3,1]. Note: Could you optimize your algorithm to use only O(k) extra

算法基础_递归_求杨辉三角第m行第n个数字

问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好): import java.util.Scanner; /** * 求杨辉三角第m层第n个数字 * @author Administrator * */ public class Demo05 { public static int f(int m,int n) { if(n==0)return 1

算法:杨辉三角(Pascal&#39;s Triangle)

一.杨辉三角介绍 杨辉三角形,又称帕斯卡三角形.贾宪三角形.海亚姆三角形.巴斯卡三角形,是二项式系数的一种写法,形似三角形,在中国首现于南宋杨辉的<详解九章算法>得名,书中杨辉说明是引自贾宪的<释锁算书>,故又名贾宪三角形.在那之前,还有更早发现这个三角的波斯数学家和天文学家,但相关的内容没有以图文保存下来,所以中国的数学家对此研究有很大贡献. 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 3

C语言之基本算法31—杨辉三角

//二维数组! /* ================================================================== 题目:打印杨辉三角 1 1   1 1   2   1 1   3   3   1 1   4   6   4   1 1   5  10  10   5   1 1   6  15  20  15   6   1 ............... ================================================

杨辉三角js算法

上个星期,小熙有幸去艺龙网面试web前端开发职位,技术经理在面试中,给小熙出了一道数学题.学名杨辉三角.用函数计算出第n行,第m个数值是多少.直接看效果吧 让我用函数算出,第n行,第m个数字是什么.作为理科生的小熙,虽然脑子也灵光,可是.这么久不做数学题,况且还是用函数做出来,当时脑瓜一翁,完蛋了啦,game over了.不会... 回来后,我找到难点,其实,最大的难点在于,我不会递归.这一直是我的一个痛点.呵呵了...于是,先了解,递归,,我总感觉,自己经常淹没的递归里,无法脱身...用早就忘

算法练习四:打印杨辉三角

规律:1.第n层的总和等于2的n次幂:     2. 从第三层开始数字等于它上方的两个数字之和:     3.每一行的长度等于 n ,循环 n 次: function text(n){ var arr = []; //结果 var arr1 = []; //中转 //生成杨辉三角数据 for (var i = 1; i <= n; i++) { arr1 = [1]; //第一个值为"1" for(var j = 1; j < i; j++){ if(j == i-1){

matlab算法之杨辉三角

% 帕斯卡三角形 % 杨辉三角,又名 贾宪三角形 global N; N=12; paint(); ---------------------------------------------------------- function []=paint() global N; N=12; for n=0:N; for r=0:n; if(r==0) for i=0:N-n fprintf('  '); end else fprintf('  '); end fprintf('%3d',combi