Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,178
Записей в блоге: 1
Завершенные тесты: 2
#1

Рекурсивная функция a^b с 2-я аргументами - C++

14.10.2015, 11:23. Просмотров 250. Ответов 9
Метки нет (Все метки)

Собственно возможно ли это сделать? Я не смог придумать с 2-я аргументами, только с 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
32
33
34
35
#include <iostream>
#include <cstdlib>
#include <conio.h>
 
typedef long long int llint;
 
llint f( const int, llint, int );
 
int main() {
    std::string str,str2;
    std::cin >> str;
    int x = 0, n = 0;
    for( int i = 0; i < str.length(); i++ ) {
        str2 += str[i];
        if( str[i+1] == '^' ) {
            x = atoi( str2.c_str() );
            str2 = "";
            for( int j = i+2; j < str.length(); j++ ) {
                str2 += str[j];
            }
            n = atoi( str2.c_str() );
        }
    }
    std::cout << f( x, 1, n );
    getch();
    return 0;
}
 
llint f( const int x, llint y, int n ) {
    y *= x;
    if( n == 0 ) return 1;
    if( n != 1 )
        return f( x, y, n-1 );
    else return y;
}
Прошу не обращать внимание на вписывание примера, просто для себя сделал.

Добавлено через 13 часов 21 минуту
Никто что ли не шарит в рекурсиях?
http://www.cyberforum.ru/cpp-beginners/thread264808.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2015, 11:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Рекурсивная функция a^b с 2-я аргументами (C++):

Функция main с аргументами
Приветствую, подскажите где именно указывать параметры аргументов(int argc,...

функция с аргументами массив и размерность массива
Собственно, для меня острая проблема, как с помощью указателей передать в...

Функция с двумя аргументами. Второй - по умолчанию = первому
Привет! Есть какой - то способ задать в объявление функции второй аргумент,...

рекурсивная функция
Составить программу с рекурсивною функцией n!+m! де n=4,m=6.

Рекурсивная функция.
Доброго времени суток. Мне необходимо написать рекурсивную функцию для решения...

9
Kerry_Jr
Эксперт PHP
2210 / 2006 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
14.10.2015, 11:32 #2
makfak,
C++
1
2
3
4
5
6
7
8
long long power(int x, int y)
{
    long long p = x;
    if (y == 0)
        return 1;
    else
        return p * power(x, y-1);
}
1
Barrent
246 / 122 / 54
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
14.10.2015, 11:32 #3
Для целых степеней:
C++
1
2
3
4
5
6
7
8
9
double recpow(double base, int pow) {
    if (pow == 0)
        return 1;
    if (pow < 0) {
        base = 1 / base;
        pow = -pow;
    }
    return base * recpow(base, pow - 1);
}
1
bogdan_017
21 / 21 / 19
Регистрация: 18.03.2014
Сообщений: 148
14.10.2015, 11:48 #4
makfak, вопрос только: "зачем". Есть ведь функция pow.

Взято с хабра (линк ниже):
C++
1
2
3
int pow(int a,int n) {
  return (!n)?1:a*pow(a,n-1);
}
Можно расписать как, для большей наглядности:
C++
1
2
3
4
5
int rec (int a, int degree)
{
    if (!degree) return 1;
    else return a*pow(a, degree - 1);
}
линк на хабрахабр
1
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,178
Записей в блоге: 1
Завершенные тесты: 2
14.10.2015, 18:54  [ТС] #5
bogdan_017,

Не по теме:

Потому что самому интересней.

0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
14.10.2015, 19:03 #6
Цитата Сообщение от bogdan_017 Посмотреть сообщение
makfak, вопрос только: "зачем".
Цитата Сообщение от makfak Посмотреть сообщение
Потому что самому интересней.
Так а чего же ты тогда на форум с этим вопросом полез, раз самому интереснее?
0
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,178
Записей в блоге: 1
Завершенные тесты: 2
14.10.2015, 20:54  [ТС] #7
castaway, Так я сделал, просто интересно стало, как компактнее сделать.
0
_Ivana
3232 / 1860 / 235
Регистрация: 01.03.2013
Сообщений: 5,091
Записей в блоге: 5
15.10.2015, 15:51 #8
Цитата Сообщение от makfak Посмотреть сообщение
Никто что ли не шарит в рекурсиях?
Цитата Сообщение от makfak Посмотреть сообщение
Потому что самому интересней.
C++
1
2
int sq(int x) {return x*x;}
int p(int a, int n) {return n ? (n%2 ? a*p(a,n-1) : sq(p(a,n/2))) : 1;}
0
GbaLog-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,178
Записей в блоге: 1
Завершенные тесты: 2
15.10.2015, 16:05  [ТС] #9
_Ivana, Есть вариант и полегче.
0
_Ivana
15.10.2015, 16:12     Рекурсивная функция a^b с 2-я аргументами
  #10

Не по теме:

Спрашивать на форуме вместо того, чтобы думать самому? Да, тут большинство пользуется этим вариантом.

0
15.10.2015, 16:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2015, 16:12
Привет! Вот еще темы с ответами:

Рекурсивная функция
Добрый день. Мне необходимо составить рекурсивную и нерекурсивную функцию для...

Рекурсивная функция
#include &lt;iostream&gt; void countdown(int n); void main() { countdown(4);...

Рекурсивная функция
Задача

Рекурсивная функция
Написать рекурсивную фукцию вычисления


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

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

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