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

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

Восстановить пароль Регистрация
 
zuzman322
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 5
30.07.2012, 21:31     Задача на рекурсию #1
Задание :
Напишите функцию возведения в степень, которая работала бы как для положительных, так и для отрицательных значений n: a^(-n)=1/a^n.
Что-то написал, только для отрицательных значений степени выводит 0 , помогите найти ошибку .
Вложения
Тип файла: txt задача.txt (695 байт, 8 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2012, 21:31     Задача на рекурсию
Посмотрите здесь:

C++ Задача на рекурсию
Задача на рекурсию C++
Задача на рекурсию C++
C++ Задача на рекурсию
C++ задача на рекурсию в си++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HomeR_J_SimpsoN
59 / 59 / 2
Регистрация: 15.10.2010
Сообщений: 356
30.07.2012, 21:34     Задача на рекурсию #2
C++
1
return 1/a*step(a,n+1);
Вы постоянно возводите число в степень -1. Нужно сначала обработать число как положительное, а потом - просто поделить 1 на полученное новое число.
Catstail
Модератор
 Аватар для Catstail
21495 / 10248 / 1669
Регистрация: 12.02.2012
Сообщений: 17,135
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;
 
}
zuzman322
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 5
30.07.2012, 21:41  [ТС]     Задача на рекурсию #4
спасибо)) еще подумаю
HomeR_J_SimpsoN
59 / 59 / 2
Регистрация: 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 прав.
Blagovidov
 Аватар для Blagovidov
27 / 27 / 1
Регистрация: 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;
}
Я вот так решил задачку)
HomeR_J_SimpsoN
59 / 59 / 2
Регистрация: 15.10.2010
Сообщений: 356
30.07.2012, 22:22     Задача на рекурсию #7
Опять я со своими вредными советами=)
Вовремя исправился)

Все верно сделано.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2012, 22:50     Задача на рекурсию
Еще ссылки по теме:

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

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

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

Все верно сделано.
бывает))
Yandex
Объявления
30.07.2012, 22:50     Задача на рекурсию
Ответ Создать тему
Опции темы

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