JavaScript'те оор операцияларды кайталоону оптималдаштыруу
Өткөн сабакта функцияларды кайра-кайра чакыруу чындыгында өтө аз убакытты талап кылат жана биздин оптималдаштыруубуз абдан көп үнемдөө жаратпайт. Бирок, бир нече жолу узакка созулуучу "оор" функцияны чакырсак, абал андан да начар болот.
Мисалга, сандын бөлүүчүлөрүн тапкан функция бар деп коёлу:
function getDivisorsSum(num) {
let res = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res += i;
}
}
return res;
}
Бул функциянын "оор" экени ачык-айкын. Ошондуктан мындай код жазган жакшы идея эмес:
let num = 123456;
if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
Албетте, "оор" операцияны бир жолу аткарып, натыйжасын өзгөрмөгө жазып коюп, кийин ал өзгөрмөнү керектүү жерлерде колдонуу жакшыраак:
let num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
Төмөндөгү кодду оптималдаштырыңыз:
let num = 1233456789;
if (getSumSquare(num) >= 10 && getSumSquare(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
function getSumSquare(num) {
let digits = String(num).split('');
let sum = 0;
for (let digit of digits) {
sum += digit ** 2;
}
return sum;
}