diff --git a/src/algorithms/math/factorial/__test__/factorialRecursive.test.js b/src/algorithms/math/factorial/__test__/factorialRecursive.test.js
new file mode 100644
index 0000000000..9029faee0a
--- /dev/null
+++ b/src/algorithms/math/factorial/__test__/factorialRecursive.test.js
@@ -0,0 +1,11 @@
+import factorialRecursive from '../factorialRecursive';
+
+describe('factorialRecursive', () => {
+  it('should calculate factorial', () => {
+    expect(factorialRecursive(0)).toBe(1);
+    expect(factorialRecursive(1)).toBe(1);
+    expect(factorialRecursive(5)).toBe(120);
+    expect(factorialRecursive(8)).toBe(40320);
+    expect(factorialRecursive(10)).toBe(3628800);
+  });
+});
diff --git a/src/algorithms/math/factorial/factorialRecursive.js b/src/algorithms/math/factorial/factorialRecursive.js
new file mode 100644
index 0000000000..e2b4aec6c9
--- /dev/null
+++ b/src/algorithms/math/factorial/factorialRecursive.js
@@ -0,0 +1,7 @@
+/**
+ * @param {number} number
+ * @return {number}
+ */
+export default function factorialRecursive(number) {
+  return number > 1 ? number * factorialRecursive(number - 1) : 1;
+}