Ich schreibe ein Programm in Nodejs, die die Tribonacci-Sequenz (https://en.wikipedia.org/wiki/Tribonacci_sequence) implementieren. Diese Sequenz ist wie die Fibonacci, aber jede Zahl ist die Summe der vorherigen 3 Wörter.Assertion testen 2 Arrays deepEqual
Meine Funktion funktioniert gut und sieht wie folgt aus:
// the tribonacci function
// param signature : the signature which with the function will the start the rest of the tribonacci
// param iterations : how many numbers will be returned with this function
function tribonacci(signature, iterations) {
if (signature.length == 3) { // the signature must be 3 numbers length
var tribonacci_sequence = []; // our array that will cointains the fibonacci sequence
for (i = 0; i < iterations; i++) {
if (i < 3) { // to initialize our tribonacci sequence to the three numbers of signature
tribonacci_sequence[i] = signature[i];
}
else { // now we can complete our sequence with the rest of tribonacci
tribonacci_sequence[i] = tribonacci_sequence[i-1] + tribonacci_sequence[i-2] + tribonacci_sequence[i-3];
}
}
return tribonacci_sequence;
}
server.close(); // the signature is not 3 numbers length, the tribonacci sequence cannot be done.
};
Das Problem ist, dass, wenn ich es zu behaupten, ich versuche zu testen, die Behauptung Rückkehr jedes Mal ‚undefined‘ ...
// create the server function
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
// let's start our tests
res.write('tribonacci([1,1,1],10) = [1,1,1,3,5,9,17,31,57,105] ? ' +
assert.deepEqual(tribonacci([1,1,1],10), [1,1,1,3,5,9,17,31,57,105], 'True') + '\n'
);
res.write('tribonacci([0,0,1],10) = [0,0,1,1,2,4,7,13,24,44] ? ' +
assert.deepEqual(tribonacci([0,0,1],10), [0,0,1,1,2,4,7,13,24,44], 'True') + '\n'
);
res.write('tribonacci([0,1,1],10) = [0,1,1,2,4,7,13,24,44,81] ? ' +
assert.deepEqual(tribonacci([0,1,1],10), [0,1,1,2,4,7,13,24,44,81], 'True') + '\n'
);
res.write('tribonacci([1,0,0],10) = [1,0,0,1,1,2,4,7,13,24] ? ' +
assert.deepEqual(tribonacci([1,0,0],10), [1,0,0,1,1,2,4,7,13,24], 'True') + '\n'
);
res.write('tribonacci([0,0,0],10) = [0,0,0,0,0,0,0,0,0,0] ? ' +
assert.deepEqual(tribonacci([0,0,0],10), [0,0,0,0,0,0,0,0,0,0], 'True') + '\n'
);
res.write('tribonacci([1,2,3],10) = [1,2,3,6,11,20,37,68,125,230] ? ' +
assert.deepEqual(tribonacci([1,2,3],10), [1,2,3,6,11,20,37,68,125,230], 'True') + '\n'
);
res.write('tribonacci([3,2,1],10) = [3,2,1,6,9,16,31,56,103,190] ? ' +
assert.deepEqual(tribonacci([3,2,1],10), [3,2,1,6,9,16,31,56,103,190], 'True') + '\n'
);
res.write('tribonacci([1,1,1],1) = [1] ? ' +
assert.deepEqual(tribonacci([1,1,1],1), [1], 'True') + '\n'
);
res.write('tribonacci([300,200,100],0) = []) ? ' +
assert.deepEqual(tribonacci([300,200,100],0), [], 'True') + '\n'
);
res.write('tribonacci([0.5,0.5,0.5],30) = [0.5,0.5,0.5,1.5,2.5,4.5,8.5,15.5,28.5,52.5,96.5,177.5,326.5,600.5,1104.5,2031.5,3736.5,6872.5,12640.5,23249.5,42762.5,78652.5,144664.5,266079.5,489396.5,900140.5,1655616.5,3045153.5,5600910.5,10301680.5]) ? ' +
assert.deepEqual(tribonacci([0.5,0.5,0.5],30), [0.5,0.5,0.5,1.5,2.5,4.5,8.5,15.5,28.5,52.5,96.5,177.5,326.5,600.5,1104.5,2031.5,3736.5,6872.5,12640.5,23249.5,42762.5,78652.5,144664.5,266079.5,489396.5,900140.5,1655616.5,3045153.5,5600910.5,10301680.5], 'True') + '\n'
);
// the res must end
res.end('\n');
});
Das ist das Ergebnis, wenn ich den Server starte (mit $ node server.js):
Ich überprüfte die Funktion, es gibt die sam es Ergebnisse wie in den Tests angegeben.
Jemand hat eine Lösung für mich? Vielleicht mache ich etwas falsch?
Vielen Dank für Ihre Zukunft Hilfe :)
eine könnte reine Funktion für die Berechnung von Zahlen ist in der Kontrolle von 'server.close()'? Warum nicht einen Fehler werfen, wenn die Eingaben ungültig sind? – naomik
Danke für Ihren Kommentar, aber das ist nicht wirklich der Punkt meiner Frage. –
Ihre Frage interessiert mich beim Schreiben einer Fibonacci-Prozedur, die auf eine Eingabe beliebiger Länge funktioniert. Ich werde es hier teilen [gist: polynacci.js] (https://gist.github.com/naomik/22f614dc0d3fa4e99e9bf309c333b028) – naomik