Испытание:Вечный вопрос - жизнеспособно ли?

На радостях спешу поделиться своим монстром, дендрофекальный метод - мой любимый. Кидайтесь тапками, пожалуйста, это приветствую. Успокаиваю себя, что использование массива, возможно, будет полезно Кексу для дальнейших искушений. :sweat_smile:

Сводка

var calculateDeposit = function (startSum, yearPercent, depositLength, isCapitalised) {
if (isCapitalised) {
var monthsSum = [];
monthsSum[0] = startSum + startSum * (yearPercent/100/12);
for (var i = 0; i < depositLength; i++) {
monthsSum.push(monthsSum[i] + monthsSum[i] * (yearPercent/100/12));
}
var finalSum = monthsSum[depositLength - 1];
} else
var finalSum = startSum + ((yearPercent/100)/12) * depositLength * startSum
return Math.floor(finalSum);
}

var getProfitableDeposit = function (startSum, depositLength, yearPercent, capitalisedPersent) {
var simpleDeposit = calculateDeposit(startSum, yearPercent, depositLength, false);
var complexDeposit = calculateDeposit(startSum, capitalisedPersent, depositLength, true);
if (complexDeposit > simpleDeposit) {
return 'Выбирай капитализацию. Заработаешь ’ + complexDeposit;
} else {
return 'Выбирай обычный вклад. Заработаешь ’ + simpleDeposit;
}
}

боюсь таким способом можно только ракету в роскосмосе разрабатывать :joy:

Нет, вам не нужен массив и куча вспомогательных переменных в первой функции. Чем больше ячеек памяти вы используете, тем хуже для производительности. Вы можете переписывать startSum саму в себя внутри цикла.

Раз уж мы о космонавтике - Королева в ГУЛАГ определили как раз за растрату ресурсов КБ, в котором он работал, так что оптимизируйте свой код через циклы без массивов - спасите светило науки! :sweat_smile:

1 Симпатия

Благодарю за ответ :slightly_smiling_face: