Ben yığın fonksiyonu içine bir dize dizisi ekledikten döndürmez. function generate()
, console.log(permut);
çıkışını düzgün yazdırmasına rağmen, herhangi bir veri göndermez. permut = permut.concat(arr);
Benim fonksiyon şey
var arrStr = ['a', 'a', 'b'];
var generated = [];
generate(arrStr, arrStr.length, generated);
console.log(generated);
function generate(arr, n, permut) {
if (n === 1) {
permut = permut.concat(arr);
//console.log(permut);
} else {
for (var i = 0; i < n; i++) {
generate(arr, n - 1, permut);
if (n % 2 === 0) {
swap(i, n-1, arr);
} else {
swap(0, n-1, arr);
}
}
}
}
function swap(a, b, ar) {
var temp = ar[b];
ar[b] = ar[a];
ar[a] = temp;
}
Sürüm 1 dönüşleri ile return arr
var arrStr = ['a', 'a', 'b'];
var generated = generate(arrStr, arrStr.length);
console.log(g2);
function generate(arr, n) {
if (n === 1) {
console.log(arr);
return arr;
} else {
for (var i = 0; i < n; i++) {
generate(arr, n - 1);
if (n % 2 === 0) {
swap(i, n-1, arr);
} else {
swap(0, n-1, arr);
}
}
}
}
function swap(a, b, ar) {
var temp = ar[b];
ar[b] = ar[a];
ar[a] = temp;
}
Versiyon 2
Sürüm 1 generated
değişken ve sürüm 2 getirileri boş bir dizi için tanımlanmamış.
ben bir şey alamadım hala bir test dizisi 'asd' dönmeye çalıştı ama ettik. bir JavaScript işlev içinde bildirilen
Sen yinelemeli işlevi çağırmak, ancak özyinelemeli aramanın sonucu ne yapacağız ? '' 'Yolunda aslında bir şey döndürüyor musun? –
İşlev düzgün çalışıyor. '' 'Yolunda' n', sorunlu geri dönüşün yürütüldüğü n === 1' olana kadar azaltılır. 'N! == 1' (yani' else' kısmen) bir 'return' deyimi yoksa göstermenizi kodunda – AchiPapakon
. Yani işlev hiçbir şey döndürmez. Bir değer döndürmek isterseniz, aslında 'return' ifadesini kullanmanız gerekir. 'if… else' ikili ise, o da * ya * bir şey yapar (durum doğruysa) veya başka bir şey yapar *. Fonksiyonunuzda, * başka bir şey * bölümü ilk ilk arama tarafından yürütülür ve hiçbir şey döndürmez. Kodda bir hata ayıklayıcısında adım atmanızı öneririm. –