Die Funktion funktioniert zufällig wie erwartet und gibt manchmal undefined
zurück. Das verstehe ich nicht.Rekursive Funktionen gibt erwarteten String-Wert zurück und manchmal undefiniert?
Kann jemand erklären, wie Javascript funktioniert, wenn es Funktionsaufrufe für dieses Beispiel in einem rekursiven Muster wiederholt.
main
Die Funktion nimmt zwei Argumente
Erste Arg: eine ganze Zahl, die die Anzahl von Zeichen darstellt, es aus dem zweiten Argument wird. Zweites Arg: Eine Zeichenfolge.
Der gesamte Code
var getRandomIntInteger = function (min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function recursive(arr, string, limit) {
if (string.length >= limit) {
return string
}
else {
// get random integer within the range of the array ength
var randIndex = getRandomIntInteger(0, arr.length)
// concatenate that value sitting at that index
string += arr[randIndex]
// remove that value from the array
arr.splice(randIndex, 1)
// re-run
return recursive(arr, string, limit)
}
}
var main = function(k, i) {
let inputArray = Array.from(i)
console.log('k=',k, 'inputArray length = ', inputArray.length)
if (k >= i.length) {
return 'sameple size must not exceed '
}
let s = ""
var res = recursive(inputArray, s, k)
console.log('result = ', res)
return res
}
// run the function
main(4, "ABCDEFGHI")
Dieser Funktionsaufruf manchmal gibt 4 zufällige charactors und manchmal undefined zurück, auch wenn die Funktion mit den gleichen Argumenten aufgerufen wird.
Wo ist der [Debug-Trace] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)? Sie sollten uns die Zahlen anzeigen können, die Sie aus ** getRandomInteger ** erhalten, die Werte der Argumente, die in jeder Routine angezeigt werden usw. – Prune
Welche Sprache ist das? Sie sollten das Sprach-Tag hinzufügen – user31264