Вход

Просмотр полной версии : Вопрос про рекурсию и замыкание


nanoT1m
04.06.2015, 21:47
function log(text) {
document.write(text)
}

var n = 2;
var k = 2;
var arr = [];
var j = 0;

function gen(pos) {
if (pos == n) {
log(arr);
console.log(arr);
log("<br>");
return;
}

for (var i = 0; i < k; i++) {
arr[pos] = i;
gen(pos+1);
}
}

gen(0);

Не могу понять почему в приведенном коде функции 12| log(arr) и 13| console.log(arr) выводят разные результаты. Может мне кто-нибудь это разъяснить?:-?

рони
04.06.2015, 22:00
nanoT1m,
и в каком браузере разные?

nanoT1m
04.06.2015, 22:06
Извиняюсь, надо было в других браузерах проверить. В Safari результаты разные.

nanoT1m
04.06.2015, 22:08
рони,
console.log() в Safari выводит

[1, 1]
[1, 1]
[1, 1]
[1, 1]

nanoT1m
04.06.2015, 22:58
var n = 2;
var k = 2;
var arr = [];
var cache = [];
var l = 0;

function gen(pos) {
if (pos == n) {
cache[l++] = arr;
return;
}

for (var i = 0; i < k; i++) {
arr[pos] = i;
gen(pos+1);
}
}

gen(0);

console.log(cache[0])

в консоль выводит [1,1], а хотелось бы [0,0] :( в чем же проблема?