Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 5
1

Задача на рекурсию

30.07.2012, 21:31. Просмотров 1152. Ответов 7
Метки нет (Все метки)

Задание :
Напишите функцию возведения в степень, которая работала бы как для положительных, так и для отрицательных значений n: a^(-n)=1/a^n.
Что-то написал, только для отрицательных значений степени выводит 0 , помогите найти ошибку .
0
Вложения
Тип файла: txt задача.txt (695 байт, 9 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2012, 21:31
Ответы с готовыми решениями:

Задача на рекурсию
Задание: написать функцию умножения двух чисел, используя только операции сложения и рекурсии. Не...

Задача на рекурсию
С помощью рекурсии вычислить произведение ненулевых элементов динамического массива. Кто-то знает?...

Задача на рекурсию
Помогите решить след. задачу: Вот мой вариант, но здесь не сохраняется порядок: void Func()...

Задача на рекурсию
Дано натуральное число n. Выяснить, имеется ли среди чисел n, n+1, ..., 2n близнецы, т.е. простые...

7
59 / 59 / 8
Регистрация: 15.10.2010
Сообщений: 356
30.07.2012, 21:34 2
C++
1
return 1/a*step(a,n+1);
Вы постоянно возводите число в степень -1. Нужно сначала обработать число как положительное, а потом - просто поделить 1 на полученное новое число.
1
Модератор
26279 / 13686 / 2604
Регистрация: 12.02.2012
Сообщений: 22,456
30.07.2012, 21:41 3
Естественно. У тебя же все числа целые. Прикинь, чему будет равно, например, 1/10? Правильно - нулю.

Добавлено через 2 минуты
Вот работающий код:

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.h"
 
double step(double a , int n)
{
       if (n>=0)
       {
                if (n==0)
                return 1;
                else 
                return a*step(a,n-1);
                }
       else 
       {
                if (n==-1)
                return 1/a;
                else 
                return 1/a*step(a,n+1);
                 }
}
int main ()
{
    int n;
    double a,rez;
 
    cout<<"Enter number and exp : ";
    cin>>a;
    cin>>n;
    rez=step(a,n);
    cout<<"Result : "<<rez<<endl;
 
}
1
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 5
30.07.2012, 21:41  [ТС] 4
спасибо)) еще подумаю
0
59 / 59 / 8
Регистрация: 15.10.2010
Сообщений: 356
30.07.2012, 21:55 5
Цитата Сообщение от HomeR_J_SimpsoN Посмотреть сообщение
C++
1
return 1/a*step(a,n+1);
Вы постоянно возводите число в степень -1. Нужно сначала обработать число как положительное, а потом - просто поделить 1 на полученное новое число.
Да, не слушайте меня. Я отчасти неправ =) Выражение само по себе верное. Просто немного неразумное. Catstail прав.
0
27 / 27 / 3
Регистрация: 19.04.2012
Сообщений: 41
30.07.2012, 22:20 6
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int F(int n, int x) {
    if (n == 0) {
        return 1;
    } else if (n < 0) {
        return 1 / F(abs(n), x);
    } else {
        return x * F(n - 1, x);
    }
}
 
int main() {
    int n, x;
    cout << "n=";
    cin >> n;
    cout << "x=";
    cin >> x;
    cout << F(n, x) << endl;
    return 0;
}
Я вот так решил задачку)
0
59 / 59 / 8
Регистрация: 15.10.2010
Сообщений: 356
30.07.2012, 22:22 7
Опять я со своими вредными советами=)
Вовремя исправился)

Все верно сделано.
0
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 5
30.07.2012, 22:50  [ТС] 8
Цитата Сообщение от HomeR_J_SimpsoN Посмотреть сообщение
Опять я со своими вредными советами=)
Вовремя исправился)

Все верно сделано.
бывает))
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2012, 22:50

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Задача на рекурсию
Дано число. Вывести все цифры этого числа, не используя дополнительных библиотек, массивов, списков...

Задача на рекурсию
помогите написать пожалуйста программу на с++ по теме рекурсия. Задано действительное A, найти...

Задача на рекурсию
Всем доброго времени суток. Прошу подсказать мне условие задачи на рекурсию(нам дали задание самим...

задача на рекурсию в си++
Даны числа a и b. Определите, сколько существует последовательностей из a нулей и b единиц, в...


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

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

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