阶乘
阶乘就是阶梯一样,从高往下乘,类如求5的阶乘:54321 公式 n * fn(n-1)
function Num(val) {
if (val > 1) {
return val * Num(val - 1)
} else {
return 1
}
}
let result = Num(10)
console.log(result);
斐波那契数列
斐波那契数列的概念 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。
斐波那契数列指的是这样一个数列: 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711……
它的规律是:这个数列从第 3 项开始,每一项都等于前两项之和。
// function f(value) {
// if (value == 1 || value == 2) {
// return 1
// }
// 如果n != 1 && n != 2 进行递归运算
// return f(value - 1) + f(value - 2)
// }
// let result = f(6)
// console.log(result);
什么是递归
递归简单来说就是在运行过程中不断调用自己,直到碰到终止条件,返回结果的过程。
递归可以看作两个过程,分别是递和归。递就是原问题把要计算的结果传给子问题;归则是子问题求出结果后,把结果层层返回原问题的过程。
// let arr1 = [
// {
// id: 1,
// name: "水果",
// price: 60,
// children: [
// {
// id: 11,
// name: "猕猴桃",
// price: 100,
// children: [
// { id: 5, name: "苹果", price: 600 },
// { id: 6, name: "梨", price: 300 },
// { id: 7, name: "葡萄", price: 100 },
// ],
// },
// {
// id: 12,
// name: "水蜜桃",
// price: 200,
// children: [
// { id: 8, name: "榴莲", price: 100 },
// { id: 9, name: "芒果", price: 2 },
// { id: 10, name: "菩提", price: 100 },
// ],
// },
// ],
// },
// {
// id: 2,
// name: "衣服",
// price: 38,
// children: [
// {
// id: 21,
// name: "裙子",
// price: 100,
// children: [
// { id: 16, name: "短款", price: 600 },
// { id: 17, name: "长款", price: 300 },
// { id: 18, name: "定制款", price: 100 },
// ],
// },
// {
// id: 22,
// name: "裤子",
// price: 200,
// children: [
// { id: 19, name: "七分裤", price: 100 },
// { id: 20, name: "喇叭裤", price: 2 },
// { id: 21, name: "沙滩裤", price: 100 },
// ],
// },
// ],
// },
// {
// id: 3,
// name: "孜然拌饭",
// price: 198,
// },
// {
// id: 4,
// name: "烤肉饭",
// price: 998,
// },
// ]
// let sum = 0;
// let newArr = []
// function fn(Arr) {
// Arr.forEach(item => {
// newArr.push(item.price) //可以拿到每一项的钱
// if (item.children instanceof Array) { //判断children是不是数组是的就继续递归
// fn(item.children)
// }
// })
// }
// fn(arr1)
// for (let i = 0; i < newArr.length; i++){
// sum+= newArr[i]
// }
// console.log(sum);