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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
danil663
1 / 1 / 0
Регистрация: 11.06.2013
Сообщений: 170
#1

Написать рекурсивную функцию для расчета степени n вещественного числа a - C++

01.11.2013, 14:55. Просмотров 2854. Ответов 10
Метки нет (Все метки)

Написать рекурсивную функцию для расчета степени n вещественного числа a (n – натуральное число).
Только словами по проще,если можно.Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2013, 14:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать рекурсивную функцию для расчета степени n вещественного числа a (C++):

Написать рекурсивную функцию для расчета степени n заданного вещественного числа - C++
Написать рекурсивную функцию для расчета степени n вещественного числа а.

Написать рекурсивную функцию для расчета степени n вещественного числа a (n — натуральное число) - C++
Помогите пожалуйста, написал программу, но без рекурсива. Не понимаю как он вообще должен выглядеть и куда вписываться. Вот собственно сама...

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

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

Описать рекурсивную функцию вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: - C++
Описать рекурсивную функцию вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: Y0 = 1, YN+1 =...

Реализовать рекурсивную функцию вычисления степени из числа - C++
Добрый день , помогите решить задачи : ==================================================================================== ...

10
FreeMan108
121 / 121 / 6
Регистрация: 04.03.2013
Сообщений: 370
01.11.2013, 15:53 #2
C++
1
2
3
4
5
6
7
double Step (double a, int n)
{
   if (n == 1)
     return a;
  else
    return a*Step (a, n-1);
}
0
Matan!
Delphi/Java/DB Dev + Math
335 / 201 / 41
Регистрация: 31.05.2013
Сообщений: 1,635
Записей в блоге: 3
Завершенные тесты: 2
01.11.2013, 16:39 #3
Цитата Сообщение от FreeMan108 Посмотреть сообщение
return a*Step (a, n-1)
И программа чокнется,столкнувшись спрева с нулевой,а потом с отрицательной степенью...
0
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
01.11.2013, 16:50 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double _pow(double a,int n) {
    if (n == 0) {
        return 1;
    }
    if (n == 1) {
        return a;
    }
    if (n>0) {
        return a*_pow(a,n-1);
    }
    if (n<0) {
        return 1/a * _pow (a,n+1);
    }
}
0
Extrim88
50 / 50 / 11
Регистрация: 08.02.2013
Сообщений: 189
01.11.2013, 16:56 #5
Ветка n < 0 не нужна, в условии задания говорится, что n - натуральное число.

Добавлено через 2 минуты
Поэтому тип переменной n лучше сделать беззнаковым целым, например unsigned int.
0
Matan!
Delphi/Java/DB Dev + Math
335 / 201 / 41
Регистрация: 31.05.2013
Сообщений: 1,635
Записей в блоге: 3
Завершенные тесты: 2
01.11.2013, 17:18 #6
Цитата Сообщение от Extrim88 Посмотреть сообщение
Ветка n < 0 не нужна, в условии задания говорится, что n - натуральное число.
А откуда программе знать,какое n?Я захочу и введу,а программа сломается
Цитата Сообщение от Extrim88 Посмотреть сообщение
оэтому тип переменной n лучше сделать беззнаковым целым, например unsigned int.
Дай Бог,чтобы это спасло.Извиняюсь,не подумал об этой возможности
Цитата Сообщение от scenotaph Посмотреть сообщение
double _pow(double a,int n) { if (n == 0) { return 1; }
Прога должна 1 выводить,а так она проигнорирует это дело.
Цитата Сообщение от scenotaph Посмотреть сообщение
if (n>0) { return a*_pow(a,n-1); }
n>1
Цитата Сообщение от scenotaph Посмотреть сообщение
if (n<0) { return 1/a * _pow (a,n+1); } }
Просто return 1/a * _pow (a,n), иначе введу n=-1 и Hello,error
0
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
01.11.2013, 17:22 #7
n - целое. n>1 и n>0 будут эквиваленты, т.к. в начале оно сравнивается с единицей и нулём
Вводите -1, ничего не будет

А ваш "Просто return 1/a * _pow (a,n) " приведет к бесконечной рекурсии
0
Matan!
Delphi/Java/DB Dev + Math
335 / 201 / 41
Регистрация: 31.05.2013
Сообщений: 1,635
Записей в блоге: 3
Завершенные тесты: 2
01.11.2013, 18:06 #8
Цитата Сообщение от scenotaph Посмотреть сообщение
Вводите -1, ничего не будет
Совсем ничего?
Цитата Сообщение от scenotaph Посмотреть сообщение
if (n == 0) { return 1; }
Зачем тогда это писал,если
Цитата Сообщение от scenotaph Посмотреть сообщение
n>1 и n>0 будут эквиваленты
?
0
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
01.11.2013, 18:11 #9
При вводе -1 всё замечательно считает.
Потому что если степень нулевая, то возвращаем один. Что за вопросы глупые?
0
FreeMan108
121 / 121 / 6
Регистрация: 04.03.2013
Сообщений: 370
01.11.2013, 20:29 #10
Цитата Сообщение от Matan! Посмотреть сообщение
И программа чокнется,столкнувшись спрева с нулевой,а потом с отрицательной степенью...
Это невозможно. Сказанно, что n - натуральное.

C++
1
2
if (n == 1)
  return a;
Не может быть такого вызова функции, где n <= 0. Этот кусочек кода это предотвращает.

Добавлено через 5 минут
Цитата Сообщение от Matan! Посмотреть сообщение
А откуда программе знать,какое n?Я захочу и введу,а программа сломается
Вот обработка ошибки. Специально для тех, кому не терпится что-то взломать.

C++
1
2
if (n < 1)
  return ID_ERROR;
0
Matan!
Delphi/Java/DB Dev + Math
335 / 201 / 41
Регистрация: 31.05.2013
Сообщений: 1,635
Записей в блоге: 3
Завершенные тесты: 2
03.11.2013, 07:41 #11
Цитата Сообщение от FreeMan108 Посмотреть сообщение
Вот обработка ошибки. Специально для тех, кому не терпится что-то взломать.
Код C++

if (n < 1)
return ID_ERROR;
Другое дело

Добавлено через 1 минуту
Цитата Сообщение от FreeMan108 Посмотреть сообщение
Это невозможно. Сказанно, что n - натуральное.
Код C++

if (n == 1)
return a;
Не может быть такого вызова функции, где n <= 0. Этот кусочек кода это предотвращает.
Ничего он не предотвращает... Всего навсего указывает программе,как себя вести,если показатель равен 1.

Добавлено через 2 минуты
Что,кстати говоря,совершенно бессмысленно,так как с матем.точки зрения в 1 нет никаких особенностей,поэтому программа сама прекрасно справится без каких-либо инструкций.
0
03.11.2013, 07:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2013, 07:41
Привет! Вот еще темы с ответами:

Написать рекурсивную функцию, для определения всех делителей натурального числа - C++
помогите пожалуйста, написать рекурсивную функцию определения всех делителей натурального числа n.

Написать рекурсивную функцию для нахождения произведения цифр натурального числа - C++
.Написать рекурсивную функцию для нахождения произведения цифр натурального числа. С помощью этой функции найти произведения цифр пяти...

Реализовать рекурсивную функцию, находящую значение n-й степени числа x по заданной формуле - C++
Реализовать рекурсивную функцию, находящую значение n-й степени числа x по формуле:

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


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

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

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