JavaScriptda Og'ir Amallarni Takrorlashni Optimallashtirish
Oldingi darsda funktsiyalarni takroriy chaqirishlar aslida juda oz vaqt oladi va bizning optimizatsiyamiz juda ko'p tejamaydi. Biroq, hammasi yomonroq bo'ladi, agar biz bir necha marta "og'ir" funktsiyani chaqirsak, u yetarlicha uzoq vaqt bajariladi.
Masalan, bizda sonning bo'luvchilarini topadigan funktsiya bor deylik:
javascriptfunction getDivisorsSum(num) {
let res = 0;
for (let i = 1; i <= num; i++) {
if (num % i === 0) {
res += i;
}
}
return res;
}
Shubhasiz, bu funktsiya yetarlicha "og'ir". Shuning uchun quyidagi kodni yozish yomon fikr bo'ladi:
javascriptlet num = 123456;
if (getDivisorsSum(num) >= 10 && getDivisorsSum(num) <= 100) {
console.log('+++');
} else {
console.log('---');
}
Albatta, "og'ir" amalni bajarish yaxshiroq bir marta va natijani o'zgaruvchiga yozing, keyin esa kerakli joylarda shu o'zgaruvchidan foydalaning:
javascriptlet num = 123456;
let sum = getDivisorsSum(num);
if (sum >= 10 && sum <= 100) {
console.log('+++');
} else {
console.log('---');
}
Задание 1
Quyida keltirilgan kodni optimallashtiring:
javascriptlet 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;
}