1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
........
观察这样的一组数,找出规律,用控制台输出这样规律的数
规律:这是杨辉三角,每一行头尾的数都是1,其余的数是上一行对应的数字相加。
一.使用递归算法。
js代码如下:
function combination(m,n){
if(n == 0) return 1;//第一个数为1
else if(m == n) return 1; //最后一个数为1
else return combination(m-1,n-1)+combination(m-1,n);//中间的数为前一行的两个数相加
}
function Print(n){
for( var i = 0 ; i < n ; i++ ){
let arr=[];//用来放第i行的数
for ( var j = 0 ; j <= i ; j++ ) {
arr.push(combination(i,j));
}
console.log(arr.join(' '));//字符串形式输出
}
}
如运行函数Print(6),则控制台输出如下:
二.不使用递归
var generate = function(numRows){
let result=[]
for(let i=0;i<numRows;i++){
var arr=[];
if(i+1==1){
arr=[1]
result.push(arr)
console.log(arr.join(' '))
continue;
}
if(i+1==2){
arr=[1,1]
result.push(arr)
console.log(arr.join(' '))
continue;
}
for(let j=0;j<=i;j++){
if(j==0||j==i){
arr.push(1)
}
else{
arr.push(+(result[i-1][j-1]+result[i-1][j]))
}
}
result.push(arr)
console.log(arr.join(' '))
}
return result
};