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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа обучения таблице умножения http://www.cyberforum.ru/cpp-beginners/thread107571.html
У Дейтелов есть задача Я написал такой код: #include<iostream> using namespace std; #include<windows> #include<iomanip>
C++ Класс окружность Помогите сделать программу Описать класс окружность, написать функцию ввода и вывода информации про окружность, и написать функцию вычисления S-окружности, x,y-координаты, R-радиус, float-тип http://www.cyberforum.ru/cpp-beginners/thread107556.html
Обработка строк C++
Строка вводится в клавиатуры: 1) В данной стоке вставить пробел после каждого символа 2) В данной строке удалить все пробелы
Заменить первый и последний символ слова на * C++
Слово вводится с клавиатуры: 1)Заменить первый и последний символ на * 2)Произвести обмен первого и последнего символов 3)К данному слову присоединить столько "!". Сколько в нем имеется букв...
C++ Гоночки в консоли http://www.cyberforum.ru/cpp-beginners/thread107540.html
Товарищи, помогите реализовать програмку, которая бы надвигала препятствия на машинку. До определенного момента дошел, а дальше ума не приложу. Вообщем есть 2 вопроса: 1. Как заставить...
C++ Почему возникает переполнение стека??? У меня есть программа которая выводит все возможные перестановки заданного слова(числа) в данном случае числа 123, но почему то возникает переполнение стека. Помогите разобраться. ... подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
23.03.2010, 04:17
Ошибка в условии остановки рекурсии. Рекурсивные вызовы должны останавливаться, когда переменная 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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru