Skip to content

Commit fa31e1c

Browse files
committed
:3
1 parent e5231ae commit fa31e1c

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

csharp/Platform.Numbers.Benchmarks/MathBenchmarks.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,5 +31,17 @@ public long FactorialWhileWithArray()
3131
{
3232
return Math.FactorialWhileWithArray(FACTORIALTESTNUMBER);
3333
}
34+
35+
[Benchmark]
36+
public long FactorialWhileWithoutArray()
37+
{
38+
return Math.FactorialWhileWithoutArray(FACTORIALTESTNUMBER);
39+
}
40+
41+
[Benchmark]
42+
public long FactorialWhileWithoutArrayAndCountingArrayLength()
43+
{
44+
return Math.FactorialWhileWithoutArrayAndCountingArrayLength(FACTORIALTESTNUMBER);
45+
}
3446
}
3547
}

csharp/Platform.Numbers/Math.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,12 @@ public static long FactTree(int n)
116116
return n * Factorial(n - 1);
117117
}
118118

119+
/// <summary>
120+
/// <para>Generate the factorial of the value "n".</para>
121+
/// <para>Генерация факториaла из значения переменной "n".</para>
122+
/// </summary>
123+
/// <param name="n"><para>Factorial generation value.</para><para>Значение генерации факториала.</para></param>
124+
/// <returns><para>Result of factorial calculation.</para><para>Результат подсчета факториала</para></returns>
119125
public static long FactorialWhileWithArray(long n)
120126
{
121127
long[] _facts =
@@ -131,6 +137,37 @@ public static long FactorialWhileWithArray(long n)
131137
return r;
132138
}
133139

140+
/// <summary>
141+
/// <para>Generate the factorial of the value "n".</para>
142+
/// <para>Генерация факториaла из значения переменной "n".</para>
143+
/// </summary>
144+
/// <param name="n"><para>Factorial generation value.</para><para>Значение генерации факториала.</para></param>
145+
/// <returns><para>Result of factorial calculation.</para><para>Результат подсчета факториала</para></returns>
146+
public static long FactorialWhileWithoutArray(long n)
147+
{
148+
if (n < _factorials.Length) return _factorials[n];
149+
150+
long r = n;
151+
while (n > 1) r *= --n;
152+
return r;
153+
}
154+
155+
/// <summary>
156+
/// <para>Generate the factorial of the value "n".</para>
157+
/// <para>Генерация факториaла из значения переменной "n".</para>
158+
/// </summary>
159+
/// <param name="n"><para>Factorial generation value.</para><para>Значение генерации факториала.</para></param>
160+
/// <returns><para>Result of factorial calculation.</para><para>Результат подсчета факториала</para></returns>
161+
public static long FactorialWhileWithoutArrayAndCountingArrayLength(long n)
162+
{
163+
if (n < 21) return _factorials[n];
164+
165+
long r = n;
166+
while (n > 1) r *= --n;
167+
return r;
168+
}
169+
170+
134171
/// <summary>
135172
/// <para>Generating the Catalan Number of the value "n".</para>
136173
/// <para>Генерация числа Каталана из значения переменной "n".</para>

0 commit comments

Comments
 (0)