Skip to content

Commit 849f255

Browse files
authored
Merge pull request #48 from Leefrost/CatalanNumbers
Catalan numbers
2 parents e361e1b + 49b9a04 commit 849f255

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using FluentAssertions;
2+
using Xunit;
3+
4+
namespace Algorithms.Tests.CatalanNumbersTests
5+
{
6+
public class CatalanNumbersTests
7+
{
8+
[Fact]
9+
public void GetNumbers_Generate3rdCatalanNumber_Return5()
10+
{
11+
var expected = 5;
12+
13+
var number = CatalanNumberGenerator.GetNumberOn(3);
14+
15+
number.Should().Be(expected);
16+
}
17+
18+
[Fact]
19+
public void GetNumbers_Generate15rdCatalanNumber_Return9694845()
20+
{
21+
var expected = 9694845;
22+
23+
var number = CatalanNumberGenerator.GetNumberOn(15);
24+
25+
number.Should().Be(expected);
26+
}
27+
28+
[Fact]
29+
public void GetNumbers_Generate0rdCatalanNumber_Return1()
30+
{
31+
var expected = 0;
32+
33+
var number = CatalanNumberGenerator.GetNumberOn(0);
34+
35+
number.Should().Be(expected);
36+
}
37+
38+
[Fact]
39+
public void GetNumbers_GenerateNegativePos_Return0()
40+
{
41+
var expected = 0;
42+
43+
var number = CatalanNumberGenerator.GetNumberOn(-1);
44+
45+
number.Should().Be(expected);
46+
}
47+
}
48+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
3+
namespace Algorithms
4+
{
5+
public static class CatalanNumberGenerator
6+
{
7+
private static double Factorial(double n)
8+
{
9+
if (n <= 0.0)
10+
return 1;
11+
12+
return n * Factorial(n - 1);
13+
}
14+
15+
public static double GetNumberOn(int n)
16+
{
17+
if (n <= 0)
18+
return 0;
19+
20+
const double topMultiplier = 2.0;
21+
var result = Factorial(topMultiplier * n) / (Factorial(n + 1) * Factorial(n));
22+
23+
return Math.Ceiling(result);
24+
}
25+
}
26+
}

0 commit comments

Comments
 (0)