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

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

Войти
Регистрация
Восстановить пароль
 
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
#1

решение через рекурсию (вычислить y=x^n по след. алгоритму) - C++

23.05.2013, 12:54. Просмотров 352. Ответов 8
Метки нет (Все метки)

Всем привет. Помогите пж решить задачку через рекурсию, без рекурсии я решил, пробую с рекурсией, не получается - нужно что-то возвращать (return).

без рекурсии


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
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
 
 
int main()
{
 int x, n;
 int y;
 cout<<"Vvedite chislo n = ";
 cin>>n;
 cout<<"Vvedite chislo x = ";
 cin>>x;
 
 if(n % 2 == 0) 
     
     y=pow(pow(x,n/2),2);
 
 else 
      
     y=pow(x*x,n-1);
 
cout<<"Y = "<<y<<endl;
 return 0;
}
вот пробую с рекурсией

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
32
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
 
 
int rec (int n, int x, int y)
{
 if(n % 2 == 0) 
 
     y= pow(pow(x,n/2),2);
 
 else 
      
     y= pow(x*x,n-1);
 
 return y;
}
 
int main()
{
 int x, n;
 int y;
 cout<<"Vvedite chislo n = ";
 cin>>n;
 cout<<"Vvedite chislo x = ";
 cin>>x;
 
cout<<"Y = "<<rec(y,x,n)<<endl;
 return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,113
23.05.2013, 13:27     решение через рекурсию (вычислить y=x^n по след. алгоритму) #2
Неплохо, если бы вы указали условие задания.
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
23.05.2013, 13:31  [ТС]     решение через рекурсию (вычислить y=x^n по след. алгоритму) #3
Вычислить y=x^n по след. алгоритму: y=(x^n/2)^2, если N четное и y=x*x^n-1, если N нечетное.
Миниатюры
решение через рекурсию (вычислить y=x^n по след. алгоритму)  
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.05.2013, 13:44     решение через рекурсию (вычислить y=x^n по след. алгоритму) #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
double f( double x, int n )
{
    if( n == 1 ) return x;
    if( n % 2 )
    {
        return x * f(x,n-1);
    }
    else
    {
        return f(x, n/2) * f(x, n/2);
    }
}
 
int main() {
    std::cout << f( 2, 9 ) << std::endl;
    return 0;
}
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
23.05.2013, 13:59  [ТС]     решение через рекурсию (вычислить y=x^n по след. алгоритму) #5
что-то оно не так считает, а можно ближе к моему коду написать?
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.05.2013, 14:03     решение через рекурсию (вычислить y=x^n по след. алгоритму) #6
Цитата Сообщение от shilovec5377 Посмотреть сообщение
а можно ближе к моему коду написать?
Измените main() чутка:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main() {
    
    int x, n;
    int y;
    std::cout<<"Vvedite chislo n = ";
    std::cin>>n;
    std::cout<<"Vvedite chislo x = ";
    std::cin>>x;
    
    std::cout << f( x, n ) << std::endl;
    return 0;
}
shilovec5377
 Аватар для shilovec5377
28 / 53 / 1
Регистрация: 26.05.2011
Сообщений: 752
23.05.2013, 14:15  [ТС]     решение через рекурсию (вычислить y=x^n по след. алгоритму) #7
а как без (std: и подскажите пж, что это такое?

Добавлено через 1 минуту
Все спасибо разобрался)))
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
23.05.2013, 15:49     решение через рекурсию (вычислить y=x^n по след. алгоритму) #8
shilovec5377, Примитивное бинарное возведение в степень
C++
1
2
3
4
5
6
7
8
9
10
int binpow (int a, int n) {
    if (n == 0)
        return 1;
    if (n % 2 == 1)
        return binpow (a, n-1) * a;
    else {
        int b = binpow (a, n/2);
        return b * b;
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2013, 15:49     решение через рекурсию (вычислить y=x^n по след. алгоритму)
Еще ссылки по теме:

поиск через рекурсию C++
C++ Программу, которая реализует решение задачи, через рекурсию, так и итеративной функции
C++ Найти тангенс x через рекурсию
C++ Не высчитывает корень через рекурсию
C++ Имитация цикла for через рекурсию

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

Или воспользуйтесь поиском по форуму:
zer0mail
2307 / 1933 / 192
Регистрация: 03.07.2012
Сообщений: 6,922
Записей в блоге: 1
23.05.2013, 15:49     решение через рекурсию (вычислить y=x^n по след. алгоритму) #9
Цитата Сообщение от Tulosba Посмотреть сообщение
C++
1
        return f(x, n/2) * f(x, n/2);
Как-то это не гуманно - функция вызывается дважды.
Yandex
Объявления
23.05.2013, 15:49     решение через рекурсию (вычислить y=x^n по след. алгоритму)
Ответ Создать тему
Опции темы

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