首页 > 代码库 > 递归的简要介绍和理解

递归的简要介绍和理解

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 
 8 <body>
 9 <script>
10     /*
11     * 递归
12     *   函数自己(内部)调用自己,递归
13     *
14     *   递归,本质上就是一个循环
15     * */
16 
17 //    function fn1() {
18 //        fn1();
19 //    }
20 //    fn1();
21 
22 //    function fn() {
23 //        setTimeout(function () {
24 //            console.log(1);
25 //            fn();
26 //        }, 100);
27 //    }
28 //    fn();
29 
30 //    function fn1() {
31 //        console.log(1);
32 //        fn2();
33 //    }
34 //
35 //    function fn2() {
36 //        console.log(2);
37 //        fn1();
38 //    }
39 //
40 //    fn1();
41 </script>
42 </body>
43 </html>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>

<body>
<script>
/*
* 阶乘
* */

function factorial(n) {
if (n == 1) {
return 1;
}
return n * factorial(n-1);
}

/*
* 5 * factorial(4)
* 5 * 4 * factorial(3)
* 5 * 4 * 3 * factorial(2)
* 5 * 4 * 3 * 2 * factorial(1)
* 5 * 4 * 3 * 2 * 1
*
* 先调用的:factorial(5)
* 最后一次调用的:factorial(1)
*
* factorial(1)先执行完,factorial(5)是最后一次执行完成的
*
* 先进后出 -> FILO -> FirstInLastOut -> 栈
* 先进先出 -> FIFO -> FirstInFirstOut -> 队列
* */

console.log( factorial(5) );

</script>
</body>
</html>

递归的简要介绍和理解