js資料結構與演算法--遞迴
阿新 • • 發佈:2018-11-02
遞迴,函式自己呼叫自己
return
- 返回值,
- 後面的程式碼不執行
function fn(num){
console.log(num)
if(num == 0){
return;
}
fn(num-1)
}
fn(10)
1-100之間,把所有能被3並且能被5整除的數獲到,然後累加求和
for迴圈
function fn(num) { var sum = 0; for (var i = 0; i < num; i++) { if (i % 3 == 0 && i % 5 == 0) { sum += i; } } return sum; } console.log(fn(100))
遞迴
function fn(num) { if (num > 100) { return 0; } if (num % 15 == 0) { return num + fn(num + 1) } return fn(num + 1) } console.log(fn(1)); // 1 -> fn(1+1) // 2 -> fn(2+1) // ... //15 -> 15+fn(15+1) // 16 -> 15+fn(16+1) // 30 -> 15+fn(30+1); // 31 -> 15+30+fn(31+1) // ... // 15+30+45+60+75+90+fn(100) // 15+30+45+60+75+90+fn(101) => 15+30+45+60+75+90+0
1-10之間,把所有能被2整除的數獲到,然後累加求和
function fn(num) { if (num > 10) { return 0; } if (num % 2 == 0) { return num + fn(num + 1) } return fn(num + 1) } console.log(fn(1)); // 1 => fn(1+1) => fn(2) // 2 => 2+fn(2+1) => 2+fn(3) // 3 => 2+fn(3+1) => 2+fn(4) // 4 => 2+4+fn(4+1) => 2+4+fn(5) //.. //10 2+4+6+8+10+fn(11) //11 2+4+6+8+10+0
1-10以內所有偶數積
function fn(num){
if(num<1){
return 1;
}
if(num%2 ==0){
return num* fn(num-1)
}
return fn(num-1)
}
var result = fn(10);
console.log(result);