var account = function(n) {
var arr = [];
if (n == 1) return 1;
if (n == 2) return 2;
if (n == 3) return 4;
if (n >= 4) {
for (let i = 4; i <= n; i++) {
account = function(i) {
return account(i - 1) + account(i - 2) + account(i - 3)
};
arr.push(account(i))
};
return arr[n - 4];
}
};
报错是因为没有对i进行控制,导致栈溢出:VM616:8 Uncaught RangeError: Maximum call stack size exceeded(…),你可以在这个语句上
console.log('===' + i);i 已out of control.看你的代码逻辑就是实现大于4的时候,返回值为前三个值相加的结果吧
当然,你提问的时候把想要实现什么逻辑说清楚回答者就更好回答了。不然只能猜或者通过代码看你想要的效果。