js中递归的重要性

编程入门 行业动态 更新时间:2024-10-10 15:24:16

js中<a href=https://www.elefans.com/category/jswz/34/1771140.html style=递归的重要性"/>

js中递归的重要性

工作当中常常要用到js的递归实现某些功能,今天就介绍下递归的应用,附上代码

// let i = 0,
//     result = 0;
// function count(i) {
//     if (i==10) {
//         return false;
//     }else {
//         result += i;
//         i++;
//         console.log(result,i);
//         count(i);
//     }
// }    
// count(i);// 递归累加
// function count(n) {
//     if(n===1 || n===0){
//         return 1;
//     }
//     return n + count(n-1);
// }
// console.log(count(10));// 递归阶乘
function multiplication(n) {if (n===1 || n===0) {return 1;}return n * multiplication(n-1)
}
console.log(multiplication(4));/* 
JavaScript 调用栈大小的限制递归并不会无限地执行下去,浏览器会抛出错误,也就是所谓的栈溢出错误(stack overflow error)
*/
// 递归求斐波那契数
// function fibonacci(n) {
//     if(n < 1) return 0;
//     if(n <= 2) return 1;
//     return fibonacci(n-1) + fibonacci(n-2)
// }
// console.log(fibonacci(6));// 记忆化斐波那契数--它可以防止递归算法重复计算一个相同的值
function fibonacciMemosization(n) {const memo = [0, 1];function fibonacci(n) {console.log('n',n);if (memo[n] != null) return memo[n];return memo[n] = fibonacci(n-1, memo) + fibonacci(n-2, memo);}// const fibonacci = (n) => {//     console.log('memo',memo);//     if (memo[n] != null) return memo[n];//     return memo[n] = fibonacci(n-1, memo) + fibonacci(n-2, memo);// };// console.log(fibonacci);return fibonacci(n);
}
let test = fibonacciMemosization(6)
console.log(test);/* 
为什么要用递归?它更快吗迭代的版本比递归的版本快很多,所以这表示递归更慢。但是,再看看三个不同版本的代码。递归版本更容易理解,需要的代码通常也更少。另外,对一些算法来说,迭代的解法可能不可用,而且有了尾调用优化,递归的多余消耗甚至可能被消除。所以,我们经常使用递归,因为用它来解决问题会更简单
*/

更多推荐

js中递归的重要性

本文发布于:2023-11-17 14:31:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1645237.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:递归   重要性   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!