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

C++

Войти
Регистрация
Восстановить пароль
 
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
#1

Возведение в стрепень, рекурсивная функция. - C++

19.12.2009, 15:27. Просмотров 900. Ответов 4
Метки нет (Все метки)

Задание: написать рекурсивную функцию, которая возводит число в степень путем многократного умножения числа самого на себя.
(Сам знаю, что можно сделать гораздо проще и оптимальнее, но надо именно через рекурсию).

P. S. На этот раз программа действительно не работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int stepenj(int num, int degr)
{
    if(degr==0)
        return 1;
    else
        return num*(num, degr-1);
}
 
int main()
{
    int number, degr;
    cout << " Enter number and degr:\n-> ";
    cin >> number >> degr;
    cout << stepenj(number, degr) << endl;
    return 0;
}
Задаю программе 4 2. Но она бред какой-то выдает, видимо ошибка в самой функции, но я не вижу.

Добавлено через 2 минуты
Может быть потому что надо 10 строку поменять?
return num*stepenj(num, degr-1);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2009, 15:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возведение в стрепень, рекурсивная функция. (C++):

Не работает рекурсивная функция - C++
У меня есть поле 80 на 80 клеток, с препятствиями. Функция должна в отдельный массив записавыть в соответствующую клеточку число,...

функция и возведение в степень - C++ Builder
Нужно сделать так, что бы пользователь ввел функцию, а программа с ней работала. Как это реализовать. из-за болезни голова совсем не...

Рекурсивная функция и двумерный массив - Visual C++
Привет всем! Хотела вот что спросить... Дали такое задание: С помощью рекурсивной функцией инициализировать двумерный массив...

Рекурсивная функция - C++
...помогите пожалуйста сделать задачки... http://cs4734.vkontakte.ru/u26212689/96588963/x_20024bb4.jpg ...

Рекурсивная функция - C++
Помогите, нужна задача, звучит так: Напечатать в обратном порядке последовательность чисел, признаком конца которой является 0. ...

Рекурсивная функция - C++
#include &lt;iostream&gt; void countdown(int n); void main() { countdown(4); // вызов рекурсивной функции system(&quot;PAUSE&quot;); } ...

4
Андрейка
420 / 224 / 27
Регистрация: 25.03.2009
Сообщений: 744
19.12.2009, 17:55 #2
OVERPOWER8, да да именно так как вы исправили ибо мы просто вызывваем эту же функцию с меньшей степенью но оно и логично чтобы сосчитать 2^3 надо 2 * 2^2 и т д..
1
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
19.12.2009, 21:36 #3
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
#include <iostream>
 
using namespace std;
 
long long BinPow(int a, int n)
{
    long long res = 1;
    while (n)
    {
        if (n&1)  
        {
            res *= a;
            --n;
        }
        else
        {
            a *= a;
            n >>= 1;
        }
    }
    return res;
}
 
int main()
{
    int a , n;
    cin >> a >> n;
    cout << (BinPow(a,n)) << endl;
    system("pause");
    return 0;
}
за 2:35 мин.
http://codepad.org/uYksI0Ai
0
Андрейка
420 / 224 / 27
Регистрация: 25.03.2009
Сообщений: 744
19.12.2009, 21:38 #4
outoftime, и где же тут рекурсия?)
0
outoftime
║XLR8║
511 / 433 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
19.12.2009, 21:47 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
using namespace std;
 
long long BinPow(int a, int n){ return (n) ? ( n&1 ? a * BinPow(a,n-1) : BinPow(a,n>>1)*BinPow(a,n>>1) )  : (1);}
 
int main()
{
    int a, n;
    cin >> a >> n;
    cout << (BinPow(a,n)) << endl;
    system("pause");
    return 0;
}
http://codepad.org/tH2z28FI
тупой алгоритм выходит, так как его быстродействие уменьшается в несколько раз..
0
19.12.2009, 21:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2009, 21:47
Привет! Вот еще темы с ответами:

Рекурсивная функция - C++
Помогите сделать вот такое задание

Рекурсивная функция у меня другая но только не рекурсивная - Java
Добрый день все ! Писал я про задачку но так и не кто откликнулся напомню о чем речь &quot; Добрый день форумчане! Мне необходимо...

рекурсивная функция - Pascal
Добрый вечер..... У меня возникла проблема, с которой я столкнулся.... Мне нужно написать рекурсивную функцию по такой задачи: Задана...

Рекурсивная функция - VBA
Создал рекурсивную функцию: Function getData(..., ParName() As Variant, ...) &lt;код&gt; ParName = Array(&quot;d_A&quot;, &quot;d_B&quot;, &quot;d_C&quot;, &quot;d_D&quot;)...


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

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

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