- 二维数组的全排列组合。
如输入[[1,2],[3,4],[5,6]]
输出:
[ 1, 3, 5 ]
[ 1, 3, 6 ]
[ 1, 4, 5 ]
[ 1, 4, 6 ]
[ 2, 3, 5 ]
[ 2, 3, 6 ]
[ 2, 4, 5 ]
[ 2, 4, 6 ]
代码实现:
function printArr(arr,n,res){
for(var i = 0; i<arr[i].length;i++){
if(n == 0){
res = []
}
if(n<arr.length){
var _res = res.slice()
_res.push(arr[n][i])
if(n == arr.length-1){
console.log(_res)
}else{
printArr(arr,n+1,_res)
}
}
}
}
// 测试:
var arr = [[1,2],[3,4],[5,6]]
printArr(arr,0)
- 打印青蛙跳台阶的所有方式
注意 不是求方式的个数,而是打印每种情况
台阶数为10,每次跳1次或两次
代码实现:
function step(n,res){
if(n==0){
res=[]
}
var i=1
while(i<3){
if(n+i<=10){
var _res = res.slice()
_res.push(i)
if(n+i == 10) {
console.log(_res)
}else{
step(n+i, _res)
}
}
i++
}
}
step(0)