求数组里两数相加的值等于某个数
比如[1,8,2,6,10,9]就有1,8等于9
function fbnq(sz, sum) {
let a = []
if (sz.length > 1) {
for (let i = 0; i <= sz.length; i++) {
if (sz[0] + sz[i + 1] === sum) {
a.push(sz[0], sz[i + 1])
}
}
sz.shift()
fbnq(sz,sum);
}
return a
}
let b = [1,8,2,6,10,9]
console.log(fbnq(b, 9), '666')
加法1+加到n,如果n是3我们可以看做是3+2+1
转入3就是3+add(3-1)
而add(3-1)就是2+add(2-1)
然后n=1了抛出retun1
其实是前面的3+2的值再加1
function add(n){
if(n==1){
return 1;
}
return n+add(n-1);
}
阶乘和上面的思路一样
function add(n){
if(n==1){
return 1;
}
return n*add(n-1);
}
console.log(add(5))
我们有下面代码可得递归的执行的最后是return的相乘和相加得到结果,根据return参数和funtion的运算符决定
//1+到n
function addn1(n) {
if (n == 1) {
return 1;
}
return n + addn1(n - 1);
}
function addn2(n) {
if (n == 1) {
return 2;
}
return n + addn2(n - 1);
}
//1*到n
function factorial1(n) {
if (n == 1) {
return 1;
}
return n * factorial1(n - 1);
}
function factorial2(n) {
if (n == 1) {
return 2;
}
return n * factorial2(n - 1);
}
console.log("n=1retrun1 1+到5", addn1(5), "n=1retrun2 1+到5" ,addn2(5))
console.log("n=1retrun1 5的阶乘是", factorial1(5), "n=1retrun2 5的阶乘是" ,factorial2(5))
记录自己某个阶段的理解,而不是写给你们看的