Вопрос задан 28.09.2023 в 07:44. Предмет Информатика. Спрашивает Махметов Ернар.

Рекурсия в 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; }
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Гончар Алина.

Ответ:

Объяснение:

Вот исправленный вариант

Цикл перенести в 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;

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

В вашем коде есть несколько проблем. Давайте их разберем:

  1. Не инициализирована переменная base. Вы должны присвоить ей начальное значение до того, как использовать её в функции calculatePower.

  2. Внутри функции calculatePower у вас есть цикл for, который пытается возвести числа от 1 до 10 в степень powerRaised, но это не соответствует задаче, которая требует возвести одно число (введенное с клавиатуры) в степень. Вместо этого, вы должны вызывать calculatePower с уменьшенным powerRaised, чтобы рекурсивно возвести число в степень.

  3. Ваш вывод в цикле 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); } }

Теперь код должен корректно возводить число в степень, указанную пользователем.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос