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

Описать рекурсивную функцию pow(x,n) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Mik2012
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 11
23.10.2012, 20:53     Описать рекурсивную функцию pow(x,n) #1
пожалуйста помогите, не могу сообразить как написать такую вот программу:Описать рекурсивную функцию pow(x,n) от действительного х (х≠0) і целого n, которая подщитивает величину xn согласно формуле:

x^n=1, если n=0
x^n=1/x^|n|, если n<0
x^n=x*x^n-1, если n>0.
Буду благодарен за любую помощь.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
23.10.2012, 21:47     Описать рекурсивную функцию pow(x,n) #2
Лови рекурсию
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 pow (int x, int n)
{
    if (n == 0) return 1;
    else if ( n > 0) return x * pow(x, n-1);
    else if ( n < 0) return 1/(x * pow(x, n-1));
}
 
int main(int argc, char ** argv)
{
    int n(3);
    int x(5);
 
    cout << pow(x, n) << endl;
 
    return 0;
}
Добавлено через 14 минут
Цитата Сообщение от ilikeMagic Посмотреть сообщение
Лови рекурсию
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 pow (int x, int n)
{
    if (n == 0) return 1;
    else if ( n > 0) return x * pow(x, n-1);
    else if ( n < 0) return (1/x) * pow(x, n+1);
}
 
int main(int argc, char ** argv)
{
    int n(3);
    int x(5);
 
    cout << pow(x, n) << endl;
 
    return 0;
}
Исправил ошибку в предыдущем посте.
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
23.10.2012, 22:26     Описать рекурсивную функцию pow(x,n) #3
ilikeMagic, pow лучше не использовать, т.к. есть в <cmath>, x и возвращаемое значение должны быть double, и случай n<0 вернет 0 (1/x == 0 т.к. 1 и x имеют тип int), и сама формула хоть и верная (если x - double), но не соответствует заданию.
C++
1
2
3
4
5
6
7
8
double power(double x, int n) {
  if (n == 0)
    return 1.0;
  if (n < 0)
    return 1.0/power(x, -n);
  else
    return x * power(x, n-1);
}
ilikeMagic
11 / 11 / 2
Регистрация: 26.04.2012
Сообщений: 104
23.10.2012, 22:34     Описать рекурсивную функцию pow(x,n) #4
doctor_lecter, верно исправил. В торопях на я int написал и это не правильно.
Mik2012
0 / 0 / 0
Регистрация: 23.10.2012
Сообщений: 11
23.10.2012, 23:53  [ТС]     Описать рекурсивную функцию pow(x,n) #5
Спасибо огромное!
Yandex
Объявления
23.10.2012, 23:53     Описать рекурсивную функцию pow(x,n)
Ответ Создать тему
Опции темы

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