在javascript中完成递归函数

时间:2013-03-13 02:17:41

标签: javascript function loops recursion

我有这样的事情:

function recurse(a){
  for(i = a; i < 3; i++){
    alert(i);
    if(i == 0){
      recurse(++a);
    }
  }
} 
recurse(0);

我期望的输出是0(调用新函数)1,2(结束第二个函数调用),然后用1和2完成函数的第一次运行。 但相反,它只会警告0,1和2一次并完成。

1 个答案:

答案 0 :(得分:2)

i是全球性的

尝试var i,您可能会得到您期望的行为。

function recurse(a){
  for(var i = a; i < 3; i++){
    alert(i);
    if(i == 0){
      recurse(++a);
    }
  }
} 
recurse(0);

输出:0, 1, 2, 1, 2

第一个1, 2来自更深层次的递归。

根据最初的说法,您从顶层获得0,从更深层次获得1,2,然后在顶层获得其他内容(因为i < 3不再满足)。