这个递归如何优化?
在做 LeetCode 62题 时第一直觉是下面这个递归,但是这个递归问题太大了,很容易栈溢出,能否优化?或是此题不宜用递归解,得转换成循环?
var uniquePaths = function(m, n) {
if (m === 1 || n === 1) {
return 1
}
return uniquePaths(m - 1, n) + uniquePaths(m, n - 1)
};
uniquePaths(100, 100);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
从我的仓库摘一个代码,应该可以解决你的问题。
仓库地址: https://github.com/azl3979858...
递归导致的栈溢出,可以通过将函数柯里化,然后优化函数尾调用的方法来解决。
ES6
标准里,浏览器实现箭头函数的时候必须部署尾调用优化,那么,柯里化的箭头函数尾调用来完成递归,就不会导致栈溢出了,可以专心优化算法。