Реализации алгоритмов/Быстрое возведение в степень: различия между версиями

м
<source> -> <syntaxhighlight> (phab:T237267)
м (<source> -> <syntaxhighlight> (phab:T237267))
 
==[[w:C (язык программирования)|C]]/[[w:C++|C++]]==
'''C:''' Подключение математической библиотеки (для работы со значениями NAN, INF и соответствующими функциями):
<sourcesyntaxhighlight lang="c">#include <math.h></sourcesyntaxhighlight>
 
Тип <code>Real</code> должен быть задан как:
<sourcesyntaxhighlight lang="c">typedef double Real; /* Вместо double можно подставить другой вещественный тип */</sourcesyntaxhighlight>
 
'''C++:''' Подключение математической библиотеки (для работы со значениями NAN, INFINITY и сопутствующим функциями):
<sourcesyntaxhighlight lang="c">
#include <сmath>
 
using namespace std;
</syntaxhighlight>
</source>
 
Каждую нижеприведённую функцию следует предварять строкой:
<sourcesyntaxhighlight lang="cpp">template <typename Real></sourcesyntaxhighlight>
 
Цикл:
<sourcesyntaxhighlight lang="c">
Real fastPower(Real base, int exponent) {
if (isnan(base)) /* Если основание = неопределённость: */
return exponent & 1 ? base : (Real)0; /* 0 в положительной степени = 0 (в нечётной сохраняет знак −, если он есть) */
}
</syntaxhighlight>
</source>
 
Рекурсия:
<sourcesyntaxhighlight lang="c">
static Real _fastPower(Real base, int exponent) {
if (!exponent)
return exponent & 1 ? base : (Real)0; /* 0 в положительной степени = 0 (в нечётной сохраняет знак −, если он есть) */
}
</syntaxhighlight>
</source>
 
==[[w:C_Sharp|C#]]==
 
Цикл:
<sourcesyntaxhighlight lang="csharp">
static double FastPower(double @base, int exponent)
{
return (exponent & 1) != 0 ? @base : 0.0; // 0 в положительной степени = 0 (в нечётной сохраняет знак −, если он есть)
}
</syntaxhighlight>
</source>
Рекурсия:
<sourcesyntaxhighlight lang="csharp">
private static double _FastPower(double @base, int exponent)
{
return (exponent & 1) != 0 ? @base : 0.0; // 0 в положительной степени = 0 (в нечётной сохраняет знак −, если он есть)
}
</syntaxhighlight>
</source>
 
==[[w:Паскаль (язык программирования)|Pascal]]==
 
Цикл:
<sourcesyntaxhighlight lang="pascal">
function FastPower(base: Real; exponent: Integer): Real;
var power: Real;
FastPower := 0
end;
</syntaxhighlight>
</source>
Рекурсия:
<sourcesyntaxhighlight lang="pascal">
function FastPower(base: Real; exponent: Integer): Real;
function _fastPower(base: Real; exponent: Integer): Real;
FastPower := 0
end;
</syntaxhighlight>
</source>
 
== [[w:Python|Python]] ==
<sourcesyntaxhighlight lang = python>
def fast_pow(x, y):
if y == 0:
if y % 2:
p *= x
return p</sourcesyntaxhighlight>
 
== [[w:JavaScript (язык программирования)|JavaScript]] ==
<sourcesyntaxhighlight lang=javascript>
function faststep (val, step, mod) {
mod = parseInt(mod);
return s;
}
</syntaxhighlight>
</source>
 
{{BookCat}}
583

правки