递归:
- 一个函数自己调用自己
- 递归的时候一定要有一个结束条件,否则就会死循环下去 以致于浏览器卡死
function fe() {
console.log('fe')
fe()
}
fe()
// 利用递归让n 累加到10
var n = 0
function add() {
if (n >= 10) {
return
}
n++
console.log(n)
add()
}
// add函数每执行一次 就会让n递增一次
// 利用递归思想 让add每次执行时 再调用一次自己(add())
// 一直到n递增为10时候 就结束执行(return)
// 求1 ~ 5 所有数的和 (从1到5 1 + 2 + 3 + 4 + 5)
function sum(n) {
if (n <= 1) {
return 1
}
return n + sum(n - 1)
}
// sum(3) 1 + 2 + 3
// R 3 + sum(3 - 1) => 3 + sum(2)
// R 3 + 2 + sum(2 - 1) => 3 + 2 + sum(1)
// R 3 + 2 + 1
// 6
function sum(n) {
if (n <= 1) {
return 1
}
return n + sum(n - 1)
}
console.log(sum(5)) // 15
// sum(5)
// R 5 + sum(5 - 1) => 5 + sum(4)
// R 5 + 4 + sum(4 - 1) => 5 + 4 + sum(3)
// R 5 + 4 + 3 + sum(3 - 1) => 5 + 4 + 3 + sum(2)
// R 5 + 4 + 3 + 2 + sum(2 - 1) => 5 + 4 + 3 + 2 + sum(1)
// R 5 + 4 + 3 + 2 + 1
// R 15
// 函数() 这个整体代表此次执行的返回值
// n + sum(n - 1)
// 用n加的 sum(n - 1)的返回值
var total = 0
for (var i = 1; i <= 5; i++) {
total += i
}
console.log(total) // 15
function add() {
// 每次递增前 先判断下 如果n已经是10了 就不要再递增了
if (n >= 10) { // 递归的结束条件
return // 遇到return整个函数就结束了 后面代码也不会执行了
}
n++
console.log(n)
add()
}
for (var i = 0; i < 10; i++) {
add()
}
console.log(n)
<script>
// function fe() {
// if (递归中止条件) {
// return
// }
// fe()
// }
// fe()
// 1 ~ 5 求和
function sum(n) {
if (n <= 1) {
return 1
}
return n + sum(n - 1)
}
console.log(sum(5))
// sum(5) n = 5
// R 5 + sum(5 - 1)
// R 5 + 4 + sum(4 - 1)
// R 5 + 4 + 3 + sum(3 - 1)
// R 5 + 4 + 3 + 2 + sum(2 - 1)
// R 5 + 4 + 3 + 2 + 1
// R 15
var total = 0
for (var i = 1; i <= 5; i++) {
total += i
}
console.log(total)
// 求 1 ~ 100 能够被3整除被5整除的数 的和
function sum(n) {
if (n < 1) {
return 0
}
// 如果当n的值能整除 就用n 累加 下一个值
if (n % 15 === 0) {
return n + sum(n - 1)
}
// 不能够被整除 直接看下一个值
return sum(n - 1)
}
var total = 0
for (var i = 1; i <= 100; i++) {
if (i % 15 === 0) {
total += i
}
}
// 求 1 ~ 100 能够被3整除的数 的和
function sum(n) {
if (n < 1) {
return 0
}
// 如果当n的值能整除 就用n 累加 下一个值
if (n % 3 === 0) {
return n + sum(n - 1)
}
// 不能够被整除 直接看下一个值
// return sum(n - 1)
// }
// console.log(sum(100)) // 1683
// 求 1 ~ 100 能够被2整除的数 的和
function sum(n) {
if (n < 1) {
return 0
}
if (n % 2 === 0) {
return n + sum(n - 1)
}
return sum(n - 1)
}
console.log(sum(100)) // 2550
// sum(100) n = 100
// n + sum(n - 1) => 100 + sum(100 - 1)
// 100 + sum(99) => 100 + sum(99 - 1)
// 100 + 98 + sum(97) => 100 + 98 + sum(97 - 1)
// 100 + 98 + 96 + sum(96 - 1)
var total = 0
for (var i = 1; i <= 100; i++) {
if (i % 2 === 0) {
total += i
}
}
console.log(total) // 2550
// 求1~100能够被2整除的数 的和 三元运算符方法
var total=0;
for(var i=0;i<=100;i++){
!(i%2)?total+=i:null;
}
console.log(total);//2550
// 求1~100能够被2整除的数 的和 for逻辑与方法
var total=0;
for(var i=0;i<=100;i++){
!(i%2)&&(total+=i)
}
console.log(total);//2550
</script>