[英]Sum of even numbers from 1-100 using recursive function in Javascript
[英]Recursive function to print numbers in JavaScript
我正在尝试创建一个递归函数以在JavaScript中打印1到10,我当前的代码是:
function rec10(x)
{
if (x < 10)
{
$('#text').val(x+1);
x = x+1;
rec10(x);
}
}
问题是,每次我激活此功能时,文本框仅直接显示“ 10”,我希望代码从0移至1,再移至2 ...直到10。在文本框中显示每个。 我尝试使用setInterval和setTimeout,但我不知道如何使用它。 非常感谢你
代替:
rec10(x);
呼叫
setTimeout(function() { rec10(x); }, 1000);
使用setInterval
可以使用以下代码:
function rec10(x) {
var interval = setInterval(function() {
if (x >= 10) clearInterval(interval);
$('#text').val(x++);
}, 1000);
}
JavaScript是单线程的,这意味着在您的代码运行时,您对DOM所做的更改将在您的代码完成后才会显示在浏览器中。
您需要将控制权交给浏览器几秒钟,这可以通过setTimeout
完成:
function rec10(x){
if (x < 10){
$('#text').val(++x);
setTimeout(function(){
rec10(x);
},20);
}
}
您是否仅因为无法创建有效的递归函数而求助于setInterval
/ setTimeout
?
如果是这样,下面的此递归函数如何不使用setInterval
/ setTimeout
:
function rec10(x) {
if (x <= 10) {
if (x <= 0) x = 1;
//append?
$('#text').val(x);
rec10(x + 1);
}
}
rec10(1);
但是上面的代码的问题是它发生得如此之快,以至于您不会注意到数字1
到9
的打印。 如果您想查看这些数字,那么建议您将值附加到占位符$('#text')
。
但是,如果您真的想看到要打印的数字,然后用下一个数字替换,那么您可以参考其他用户使用setInterval
/ setTimeout
发布的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.