*递归算法*
* * * * *
遍历目录时一般使用递归算法,否则就难以编写出简洁的代码。递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题。最简单的递归算法模型如下:
```
function factorial(n) {
if (n === 1) {
return 1
} else {
return n * arguments.callee(n - 1)
}
}
```
在严格模式下 `arguments.callee` 会报错,所以通常上面代码会写成下面形式:
```
var factorial = function foo(n) {
if (n === 1) {
return 1
} else {
return n * foo(n - 1)
}
}
```