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

Возведение в степень n с помощью рекурсии - C++

Восстановить пароль Регистрация
 
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
26.08.2011, 14:18     Возведение в степень n с помощью рекурсии #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int funk(int,int);
int main ()
{setlocale(LC_ALL,"Rus");
int a=2,n=5;
cout<<funk(a,n);
cin.get();
cin.get();
return 0;
}
int funk(int a,int n)
{if(n%2==0)
return (funk(a*=a,n-=2));
if(n==1)
    return a;
if (n%2==1)
    return(funk(a*=a,n-=1));
}
Попытался осуществить. Алгоритм понял, но на с++ с паскаля перевести не смог. Пожалуйста подскажите как правильно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2011, 14:18     Возведение в степень n с помощью рекурсии
Посмотрите здесь:

Возведение в степень с помощью умножения C++
C++ Возведение в степень. C++
C++ возведение в степень!
C++ Возведение в степень!
возведение в степень C++
C++ Возведение в степень
Сделать с помощью массива возведение двойки в произвольную степень. C++
Найти с помощью рекурсии сумму и возвести в степень C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.08.2011, 14:20     Возведение в степень n с помощью рекурсии #2
А вам точно рекурсия нужна, а то итерация быстрее работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unsigned long Degree(unsigned int a, unsigned int n)
{
  unsigned long deg, rez;
  rez = 1;
  deg = a;
  while (n != 0)
  {
     if (n & 1)
        rez *= deg;
     deg *= deg;
     n >>= 1;
  }
  return rez;
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.08.2011, 14:22     Возведение в степень n с помощью рекурсии #3
C++
1
2
3
long long pow(long long num, long long level) {
    return level ? num * pow(num, level - 1) : 1;
}
Yandex
Объявления
26.08.2011, 14:22     Возведение в степень n с помощью рекурсии
Ответ Создать тему
Опции темы

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