Дано натуральное число п. Обчислить : 1^1 - 2^1+3^2 - 4^2+5^3 - 6^3… ±п^k

Рейтинг: -1Ответов: 1Опубликовано: 26.01.2023

Добился изменяющегося знака, но степени пока не могу

<script>
let n = 10
function xsum(n)
{
    let b = 0
    for (let a = 1; a <= n; a++)
    {
        if (a % 2 != 0)
        {
            b += a
        }
        else 
        {
            b -= a
        }
    }
    return b
}
</script>

Ответы

▲ 1Принят

Чтобы изменялся знак + на - можно использовать тернарный оператор ?

i % 2 ? 1 : -1 // будет чередовать 1 и -1 каждую итерацию

Чтобы получить нужное k каждую итерацию, то можно воспользоваться побитовым оператором правого сдвига >>.

k(i) = (i + 1) >> 1 // будет прибавлять 1 к своему значению через каждые 2 итерации

Чтобы возвеси n в степень k используйте Math.pow(n, k) или n**k.

n^k = (i**((i + 1) >> 1) 

В итоге задачу можно решить примерно так:

function xsum(n) {
  let result = 1;
  if (n <= 1) return result;
  for (let i = 2; i <= n; i++) {
      result += (i % 2 ? 1 : -1) * (i**((i + 1) >> 1));
  }
  return result;
}

console.log(xsum(1), xsum(2), xsum(3), xsum(4), xsum(5)) // 1, -1, 8, -8, 117