P. S. Secara alami, rumusnya adalah solusi tercepat. Ini hanya menggunakan 3 operasi untuk nomor function sumTo(n) { /*.. your code .. */ } alert( sumTo(100) ); // 50501. Matematika membantu
Varian loop adalah yang kedua dalam hal kecepatan. Dalam varian rekursif dan loop, kami menjumlahkan angka yang sama. Tetapi rekursi melibatkan panggilan bersarang dan manajemen tumpukan eksekusi. Itu juga membutuhkan sumber daya, jadi lebih lambat
P. P. S. Beberapa mesin mendukung pengoptimalan "tail call". jika panggilan rekursif adalah yang terakhir dalam fungsi, tanpa perhitungan lain dilakukan, maka fungsi luar tidak perlu melanjutkan eksekusi, sehingga mesin tidak perlu mengingat konteks eksekusinya. Itu menghilangkan beban ingatan. Tetapi jika mesin JavaScript tidak mendukung pengoptimalan panggilan ekor (kebanyakan tidak), akan ada kesalahan. ukuran tumpukan maksimum terlampaui, karena biasanya ada batasan pada ukuran tumpukan total
Dalam tantangan ini kami diberi larik dua angka. Kita perlu mengembalikan jumlah semua angka di antara kedua angka itu. Di bagian "tautan bermanfaat", kami diberi fungsi Math.min() dan Math.max(), serta metode reduce(). Jadi untuk menyelesaikan tantangan ini, kita perlu
- Identifikasi nilai terbesar (maksimum), dan terkecil (minimum) dalam larik
- Tambahkan semua angka di antara nilai terkecil dan terbesar
Untungnya untuk langkah pertama ES6 memiliki spread operator baru yang memungkinkan ekspresi diperluas ke beberapa argumen, variabel, atau elemen (dalam kasus array), dan fungsi Math.min() dan Math.max() dapat digabungkan untuk membuat hidup sedikit lebih mudah. Kami akan menetapkan variabel nilai terkecil dan terbesar min dan function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);0masing-masing
var min = Math.min(…arr),
max = Math.max(…arr);
console.log(min + “ “ + max)
//logs 1 4
}sumAll([1, 4]);
Untuk beralih melalui angka antara min dan function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);0 kita dapat menggunakan function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);3 loop jika kita berhati-hati untuk memastikan function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);4 dimulai pada min dan meningkat sebesar function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);6 sampai sama dengan function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);0
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);_
Anda mungkin memperhatikan bahwa kami sebenarnya tidak menambahkan apa pun. Untuk memperbaikinya, kami membuat variabel untuk menyimpan peningkatan function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);8 selama setiap iterasi yang akan kami panggil function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);9 dalam contoh ini. Kami akan menetapkan nilai awalnya ke function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr),
sum = 0;
for (var i = min; i <= max; i++){
sum += i;
}
return sum;
}sumAll([1, 4]);0, dan memastikan bahwa selama setiap iterasi nilai function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);8 ditambahkan ke function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);9. Setelah putaran selesai, kita dapat mengembalikan function sumAll(arr) {
var min = Math.min(…arr),
max = Math.max(…arr);
for (var i = min; i <= max; i++){
}
}sumAll([1, 4]);9 untuk menyelesaikan tantangan