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

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

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

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

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

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

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

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

7
60 / 60 / 8
Регистрация: 15.10.2010
Сообщений: 356
30.07.2012, 21:34 2
C++
1
return 1/a*step(a,n+1);
Вы постоянно возводите число в степень -1. Нужно сначала обработать число как положительное, а потом - просто поделить 1 на полученное новое число.
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
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
60 / 60 / 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
60 / 60 / 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
30.07.2012, 22:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2012, 22:50
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru