Michaly4
@Michaly4
Учусь всю жизнь учусь)

Написать function expression суммы чисел геометрической прогрессии?

Ребят у меня 5 урок пока, многое совсем не даю дупля,не судите(
Функцию нужно написать 2 способами
1.С помощью цикла
2.С помощью формулы Sn = b1*1 - qn1-q;(b1=1)
Должно вернуть f(5,2); 1+2+4+8+16= 31
Первое начал делать ,но что-то не получается как должно вернуть....
let sumG = function (n,g) {
let b1 = 1;
let str = "";
let sum = "";
for (let i = 1; i < n; i++){
      b1 = b1 * g;
        str += b1 + " ";
                  If(b1 > 1) {
              sum = b1 + b1;
            }
         }
      console.log (str);
  return sum;
};
console.log (SumG(5,2));

Максимум до чего додумался(( но у меня выводит
2 4 8 16 -- 32 , а должно 1+2+4+8+16 = 31!!!
Не могу догнать(( поможете?
Ну и со вторым ,пжл!)
  • Вопрос задан
  • 497 просмотров
Решения вопроса 1
WblCHA
@WblCHA
Вообще, вот:
const sumG = (n, g) => {
    let sum = 0;
    let lastNum = 1;
    let str = '';
    
    for (let i = 0; i < n; i++) {
      sum += lastNum;
      str += `${lastNum} `;
      lastNum *= g;
    }
    str = str.slice(0, -1);
    
    console.log(str);
    return sum;
  };
  console.log(sumG(5,2));


НО в твоём коде есть проблемы, из-за которых он и работать не сможет.
Иф с большой буквы:
If(b1 > 1) {

Разные названия функций:
let sumG = 
SumG(5,2)

А так же просто кривой код.
Сумма должна быть числом или строкой?
let sum = "";

Это вообще, не рыба не мясо. Либо стрелочная должна быть, либо фанкшаном объявлять.
let sumG = function (n,g) {
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Karpion
Как-то так:
let sumG = function (n,g) {
let b1 = 1;
let sum = 0;
for (let i = 1; i < n; i++){
	sum += b1;
	b1 *= g;
}
return sum;
};


Самое бредовое у Вас: sum = b1 + b1; внутри цикла.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы