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

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

Войти
Регистрация
Восстановить пароль
 
zuzman322
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 5
#1

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

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

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

Задача на рекурсию - C++
Нашел одну задачу, она по моему на рекурсию, но не могу реализовать это. Сколько существует чисел от 1 до n, таких, что цифры числа...

Задача на рекурсию - C++
помогите написать пожалуйста программу на с++ по теме рекурсия. Задано действительное A, найти среди чисел 1; 1+1/2; 1+1/2+1/3;.... ...

Задача на рекурсию - C++
Вот код проги которую я написал: #include <iostream> using namespace std; int factr(double i){ int answer; if(i==1) ...

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

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

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

7
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 на полученное новое число.
1
Catstail
Модератор
23449 / 11576 / 1883
Регистрация: 12.02.2012
Сообщений: 18,901
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
zuzman322
1 / 1 / 0
Регистрация: 11.07.2012
Сообщений: 5
30.07.2012, 21:41  [ТС] #4
спасибо)) еще подумаю
0
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 прав.
0
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;
}
Я вот так решил задачку)
0
HomeR_J_SimpsoN
59 / 59 / 2
Регистрация: 15.10.2010
Сообщений: 356
30.07.2012, 22:22 #7
Опять я со своими вредными советами=)
Вовремя исправился)

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

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

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

Задача на рекурсию - C++
Помогите решить след. задачу: Вот мой вариант, но здесь не сохраняется порядок: void Func() { int x; cin&gt;&gt;x; if(0==x) ...

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

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


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

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

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