Рекурсия в C++ Только начинаю изучать C++. Подскажите в чем ошибка. Нужно чтобы числа от 1 до 10
возводилось в степень, вводимую с клавиатуры. При это нельзя использовать math.h/cmath #include using namespace std; int calculatePower(int, int); int main() { int base, powerRaised, result, i; cout << "Enter power number(positive integer): "; cin >> powerRaised; result = calculatePower(base, powerRaised); cout << "1 2 3 4 5 6 7 8 9 10 " << " ^ " << powerRaised << " = " << result; cout << i << " "; } int calculatePower(int base, int powerRaised) { if (powerRaised > 0){ for(int i=1; i<11;i++){ base = i*calculatePower(i, powerRaised-1); return base; } } return 1; }Ответы на вопрос
Ответ:
Объяснение:
Вот исправленный вариант
Цикл перенести в main
Переписана функция вычисления степени,
надо воспользоваться рекурсивным вычислением степени,
а именно x^n = x*x^(n-1).
#include <iostream>
using namespace std;
int calculatePower(int, int);
int main() {
int base, powerRaised, result, i;
cout << "Enter power number(positive integer): ";
cin >> powerRaised;
for (int i = 1; i < 11; i++) {
result = calculatePower(i, powerRaised);
cout << i << " ^ " << powerRaised << " = " << result << endl;
}
}
int calculatePower(int base, int powerRaised) {
if (powerRaised > 0) {
return base * calculatePower(base, powerRaised - 1);
}
return 1;
}
В вашем коде есть несколько проблем. Давайте их разберем:
Не инициализирована переменная
base. Вы должны присвоить ей начальное значение до того, как использовать её в функцииcalculatePower.Внутри функции
calculatePowerу вас есть циклfor, который пытается возвести числа от 1 до 10 в степеньpowerRaised, но это не соответствует задаче, которая требует возвести одно число (введенное с клавиатуры) в степень. Вместо этого, вы должны вызыватьcalculatePowerс уменьшеннымpowerRaised, чтобы рекурсивно возвести число в степень.Ваш вывод в цикле
forне находится внутри цикла, и переменнаяiне определена в функцииmain.
Вот исправленный код:
cpp#include <iostream>
using namespace std;
int calculatePower(int base, int powerRaised);
int main() {
int base, powerRaised, result;
cout << "Enter base number: ";
cin >> base;
cout << "Enter power number (positive integer): ";
cin >> powerRaised;
result = calculatePower(base, powerRaised);
cout << base << " ^ " << powerRaised << " = " << result << endl;
return 0;
}
int calculatePower(int base, int powerRaised) {
if (powerRaised == 0) {
return 1;
} else if (powerRaised < 0) {
return 0; // Обработка отрицательных степеней, если нужно
} else {
return base * calculatePower(base, powerRaised - 1);
}
}
Теперь код должен корректно возводить число в степень, указанную пользователем.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili
