1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-25 03:02:21 +00:00

edit function/tail call

This commit is contained in:
Ruan Yifeng 2015-04-10 11:55:54 +08:00
parent aba2df6647
commit afb572c243

View File

@ -680,7 +680,7 @@ function f(x){
// 情况二 // 情况二
function f(x){ function f(x){
return g(x)+1; return g(x) + 1;
} }
``` ```
@ -690,7 +690,7 @@ function f(x){
```javascript ```javascript
function f(x) { function f(x) {
if (x>0) { if (x > 0) {
return m(x) return m(x)
} }
return n(x); return n(x);
@ -711,7 +711,7 @@ function f(x) {
function f(x) { function f(x) {
let m = 1; let m = 1;
let n = 2; let n = 2;
return g(m+n); return g(m + n);
} }
// 等同于 // 等同于
@ -736,7 +736,7 @@ g(3);
```javascript ```javascript
function factorial(n) { function factorial(n) {
if (n === 1) return 1; if (n === 1) return 1;
return n * factorial(n-1); return n * factorial(n - 1);
} }
factorial(5) // 120 factorial(5) // 120
@ -749,7 +749,7 @@ factorial(5) // 120
```javascript ```javascript
function factorial(n, total) { function factorial(n, total) {
if (n === 1) return total; if (n === 1) return total;
return factorial(n-1, n * total); return factorial(n - 1, n * total);
} }
factorial(5, 1) // 120 factorial(5, 1) // 120
@ -766,7 +766,7 @@ factorial(5, 1) // 120
```javascript ```javascript
function tailFactorial(n, total) { function tailFactorial(n, total) {
if (n === 1) return total; if (n === 1) return total;
return tailFactorial(n-1, n * total); return tailFactorial(n - 1, n * total);
} }
function factorial(n) { function factorial(n) {
@ -790,7 +790,7 @@ function currying(fn, n) {
function tailFactorial(n, total) { function tailFactorial(n, total) {
if (n === 1) return total; if (n === 1) return total;
return tailFactorial(n-1, n * total); return tailFactorial(n - 1, n * total);
} }
const factorial = currying(tailFactorial, 1); const factorial = currying(tailFactorial, 1);
@ -805,7 +805,7 @@ factorial(5) // 120
```javascript ```javascript
function factorial(n, total = 1) { function factorial(n, total = 1) {
if (n === 1) return total; if (n === 1) return total;
return factorial(n-1, n * total); return factorial(n - 1, n * total);
} }
factorial(5) // 120 factorial(5) // 120