1. 程式人生 > >遞歸的簡要介紹和理解

遞歸的簡要介紹和理解

oct char html col charset filo type ctype doctype

 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>

遞歸的簡要介紹和理解