Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
#1

Вычисление степени числа рекурсивным вызовом - C++

22.03.2010, 19:14. Просмотров 1555. Ответов 2
Метки нет (Все метки)

По условию задачи
Вычисление степени числа рекурсивным вызовом

написал код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<iostream>
using namespace std;
 
#include<windows>
 
int power(int base, int exponent);
 
int main()
{
      int base; //основание. В.п.
      int exponent; //степень, в которую будет возведено основание. Вп.
 
      cout << "Base: ";
      cin >> base;
 
      cout << "exponent: ";
      cin >> exponent;
 
      cout << base << "^" << exponent << " = " << power(base, exponent) << endl;
 
      system("pause");
      return 0;
}
 
int power(int base, int exponent)
{
   if (base <= 1)
   {
      return 1;
   }
   else
   {
      return base * power(base, (exponent - 1));
   }
}
И любое значение exponent выше 1 вызывает ошибку

Process raised exception class EStackOverflow with message 'Stack overflow'.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2010, 19:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление степени числа рекурсивным вызовом (C++):

Вычисление дробной степени числа с точностью - C++
Абсолютно нет идей, как реализовать вычисление взятия числа &quot;х&quot; под корень &quot;к&quot; с точностью &quot;у&quot;, при том что число и степень дробные. И...

Вычисление степени числа А с натуральным показателем n - C++
1. Составьте программу вычисления степени числа А с натуральным показателем n. (записать варианты программы с разными видами циклов...

Цикл while: вычисление ближайшего сверху числа степени 2 - C++
задача сводится к вычислению ближайшего сверху числа степени 2, как это сделать через while?

Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. Найти ошибку - C++
Ребят, такая проблема, задание: Написать программу, которая делит числа в 5 степени на число в 14 степени и выводит ответ в 5 степени. ...

Вычисление натуральной степени вещественного числа за наименьшее число операций - C++
6. Разработайте программу вычисления an натуральной степени n вещественного числа a за наименьшее число операций

Вычисление рекурсивным методом значение математической зависимости - C++
Вычислить рекурсивным методом значение математической зависимости, заданной рекуррентной формулой, для произвольного значения параметров. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nameless One
Эксперт С++
5773 / 3424 / 255
Регистрация: 08.02.2010
Сообщений: 7,447
23.03.2010, 04:17 #2
Ошибка в условии остановки рекурсии. Рекурсивные вызовы должны останавливаться, когда переменная exponent==1, а не base<=1 - а так у тебя происходит бесконечная рекурсия (т.к. каждый рекурсивный вызов происходит с тем же самым параметром base), и соответственно, переполнение стека. Вот правильный вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
int pow(int base, int exp)
{
    if(exp==1)
       return base;
    return base*pow(base, exp-1);
}
 
int main()
{
    int b=2;
    int e=4;
    std::cout << pow(b, e) << std::endl;
    return 0;
}
0
fs444
6 / 10 / 0
Регистрация: 18.08.2009
Сообщений: 480
24.03.2010, 19:31  [ТС] #3
Nameless One, спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2010, 19:31
Привет! Вот еще темы с ответами:

Вычисление степени, в которую необходимо возвести 2 для получения числа, которое <= заданному числу - C++
Помогите написать программу, которая вычисляет целую степень, в которую необходимо возвести число 2, чтобы получить число, ближайшее...

Вывести числа от 1 до n рекурсивным способом - C++
Вывести числа от 1 до n рекурсивным способом.

вычисление степени - C++
Здрасьте! Помогите плиз!!! Нужно: вычислить a в степени (n) , если (n&gt;0). Люди добрые хелп плиз!!!!!

Вычисление корня n-ой степени - C++
Сам обучаюсь C#, но дали решить С++ не понимаю помогите пожалуйста!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru