Экспоненциальный алгоритм с добавлением

Я пытаюсь вычислить мощность числа x ^ n, просто используя чистое сложение следующим образом: 2 ^ 4 = 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 = 16, поэтому я использую следующий код вычислить 2 ^ n:

add = x
for ( i = 1; i <= n-1; i++){
add = add + add;
}
cout<< x << "^" << n << " = " << add << endl;

так что если вы хотите рассчитать 3 ^ 4, вы должны поставить add = add + add + add так что мой вопрос: как мне заставить его работать с любым номером, который хочет пользователь?

2

Решение

Для базы б к х <=> б ^ х

в C и со СТРОГО дополнением

int sum = b;
int add = b;
for (int i = 0; i < n+(-1); ++i) {
add = sum;
for (int j = 0; j < b+(-1); ++j) {
sum += add;
}
}
3

Другие решения

Вы можете проверить эту ссылку тоже. Это ответ на аналогичный вопрос
Рассчитать показатели только путем сложения

2

// first deal with pow = 1 or 0 cases not shown here
// pseudocode for pow >= 2
var = 0
for (i = 0; i < num^(pow - 2); i++)  // ^ is raising to power, not xor
for (j = 0; j < num; j++)
var += num

Как вы можете видеть с проверкой состояния «i», вы должны использовать функцию мощности в любом случае, так что на самом деле это невозможно при чистом сложении.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector