Дано натуральное число п. Обчислить : 1^1 - 2^1+3^2 - 4^2+5^3 - 6^3… ±п^k
Добился изменяющегося знака, но степени пока не могу
<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 шт):
Автор решения: Neverm1ndo
→ Ссылка
Чтобы изменялся знак + на - можно использовать тернарный оператор ?
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