JavaScript递归求解杨辉三角

来源:互联网 发布:学习软件大全下载 编辑:程序博客网 时间:2024/06/05 03:00

杨辉三角,西译Pascal's Triangle,详情见维基百科,链接如下:

维基百科-帕斯卡三角形

现在问题来了,写一个函数,给定一个深度(n),返回一个一位数组,代表杨辉三角1-n层的内容。

举例如下:

//[1]pascalsTriangle(1);//[1,1,1]pascalsTriangle(2);//[1,1,1,1,2,1]pascalsTriangle(3);

思路很简单:

假定有一维空数组array,杨辉三角每一层都看成一个数组。

那么杨辉三角第一层是[1],第二层是[1,1],第三层根据第二层构建,得到[1,2,1],每构建出一层便将当前层的数组并入array,直到到达指定的深度。

下面,我提供了递归的实现:

function pascalsTriangle(n) {//指定数组var array = [];var traverse = function foo(current){if(current.length <= n){//合并到指定数组array = array.concat(current);//构建新的一层var newArray = [];newArray[0] = 1;newArray[current.length] = 1;for(var i=0;i<current.length-1;i++){    newArray[i+1] = current[i] + current[i+1];}foo(newArray); }};traverse([1]);return array;}



0 0
原创粉丝点击