---
# System prepended metadata

title: 遞迴js
tags: [JavaScript, 遞迴]

---

# 遞迴js
>整理編輯:Jung
>目前在工作中還沒有特別遇到需要處理遞迴的問題。
但我想學習應當是一種習慣，而非努力。
>[參考來源](https://www.jstips.co/zh_tw/javascript/recursion-iteration-and-tail-calls-in-js/)
## 在 JavaScript 遞迴、反覆運算並尾呼叫
:::info
n! = n * n - 1 * ... * 1。
還記得嗎? 這就是階乘
以下我們來實作吧
:::
```javascript=
function factorial(n) {
    if (n === 0) {
        return 1;
    }
    return n * factorial(n - 1);
}
```
我們一步一步來看
當我們直接使用函式 n = 4 簡單的來看。
* 4*factorial(3)
    * 3*factorial(2)
       *  2factorial(1)
           * 1*factorial(0)
               * 1

最後可以看成4*3*2*1*1 = 24

###### tags: `JavaScript` `遞迴`