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

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

Восстановить пароль Регистрация
 
OVERPOWER8
 Аватар для OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
19.12.2009, 15:27     Возведение в стрепень, рекурсивная функция. #1
Задание: написать рекурсивную функцию, которая возводит число в степень путем многократного умножения числа самого на себя.
(Сам знаю, что можно сделать гораздо проще и оптимальнее, но надо именно через рекурсию).

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);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2009, 15:27     Возведение в стрепень, рекурсивная функция.
Посмотрите здесь:

Рекурсивная функция C++
Рекурсивная функция C++
Рекурсивная функция C++
Рекурсивная функция C++
Рекурсивная функция C++
C++ рекурсивная функция
Рекурсивная функция C++
C++ Рекурсивная функция
C++ рекурсивная функция
Рекурсивная функция C++
Рекурсивная функция C++
Рекурсивная функция C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
19.12.2009, 17:55     Возведение в стрепень, рекурсивная функция. #2
OVERPOWER8, да да именно так как вы исправили ибо мы просто вызывваем эту же функцию с меньшей степенью но оно и логично чтобы сосчитать 2^3 надо 2 * 2^2 и т д..
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
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
Андрейка
419 / 223 / 27
Регистрация: 25.03.2009
Сообщений: 744
19.12.2009, 21:38     Возведение в стрепень, рекурсивная функция. #4
outoftime, и где же тут рекурсия?)
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
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
тупой алгоритм выходит, так как его быстродействие уменьшается в несколько раз..
Yandex
Объявления
19.12.2009, 21:47     Возведение в стрепень, рекурсивная функция.
Ответ Создать тему
Опции темы

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