javascript - 什么时候使用递归函数?

标签 javascript function recursion

我正在阅读递归函数,我读到当我们使用递归函数时它会调用堆栈帧,因此如果我们最终调用递归函数 10000 次,则可能是可用内存问题。我下面有一个函数,使用递归是否正确?或者你认为我应该避免它?

function animateLeft(obj, top){
   if(top >= 300){         
       obj.style.visibility = 'visible';
       return;  
   }
   else {
       var box = obj;
       box.style.marginLeft = top + "px";
       box.style.marginTop = top + "px";
       setTimeout(function(){
           animateLeft(obj, top + 1);
       }, 25) 
   }
}
function animateMe() {
    animateLeft(document.getElementById('inner-rectange'), 0);
}

最佳答案

setTimeout 的使用意味着您的代码不是直接递归调用动画函数。这会导致函数被重复调用,但不会造成深栈的创建。

对于动画来说,这是一个相当合理的方法(有更好的方法,例如 requestAnimationFrame,但它是合理的!)

关于javascript - 什么时候使用递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20751299/

相关文章:

haskell - 在 Haskell 中编写带条件的递归函数 :

java - java中斐波那契函数的尾调用优化

javascript - Datatables fnFilter 延迟加载器/指示器

javascript - 如何通过在tinymce编辑器中创建切换按钮来添加onclick事件?

php - 使用 PHP OOP 概念连接到 MySQL 数据库

c++ - 为什么使用构造函数而不是函数?

javascript - 交叉抓取和同构抓取有什么区别?

javascript - 如何使用 javascript 为元素设置内联 css 样式?

python - 如何在函数内获取函数对象(Python)

php - 在 PHP 中查找包含二维数组中每一行的一个值的每个元素组合