Skip to content

Commit 3dca3ce

Browse files
Implemented recursive & iterative factorial (CoffeelessProgrammer#9 IP)
1 parent 9462862 commit 3dca3ce

File tree

2 files changed

+79
-4
lines changed

2 files changed

+79
-4
lines changed

Algorithms/Recursion/Basics.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,17 @@ function inception(repeat: number): string {
1010
return inception(repeat-1); // The recursive call should return itself so the calculated value can bubble up
1111
}
1212

13-
console.log(inception(5));
14-
console.log(inception(1));
15-
console.log(inception(-1));
13+
//---------------------------------------------------------------------
14+
// ---------- MAIN PROGRAM ----------
15+
//---------------------------------------------------------------------
16+
if (import.meta.main) {
1617

17-
// RUN: deno run Algorithms/Recursion/Basics.ts
18+
console.log(inception(5));
19+
console.log(inception(1));
20+
console.log(inception(-1));
21+
22+
// RUN: deno run Algorithms/Recursion/Basics.ts
23+
}
1824

1925
// --------------------------- Terminal Output: ---------------------------
2026
// Counter: 5

Algorithms/Recursion/Factorial.ts

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
function calcFactorialRecursive(input: number): number {
2+
if (input <= 1) return 1;
3+
4+
return input * calcFactorialRecursive(input-1);
5+
}
6+
7+
function calcFactorialIterative(input: number): number | undefined {
8+
if (input < 0) return undefined;
9+
10+
let factorial = 1;
11+
12+
for (let i=2; i <= input; ++i) {
13+
factorial *= i;
14+
}
15+
16+
return factorial;
17+
}
18+
19+
function validateFactorialInput(input: number): boolean {
20+
return input>=0;
21+
}
22+
23+
function printIterativeFactorial(input: number) {
24+
if (!validateFactorialInput(input)) {
25+
console.log("Input", input, "is invalid -_-'");
26+
return;
27+
}
28+
console.log('Iterative Factorial', input+':', calcFactorialIterative(input));
29+
}
30+
31+
function printRecursiveFactorial(input: number) {
32+
if (!validateFactorialInput(input)) {
33+
console.log("Input", input, "is invalid -_-'");
34+
return;
35+
}
36+
console.log('Recursive Factorial', input+':', calcFactorialRecursive(input));
37+
}
38+
39+
40+
//---------------------------------------------------------------------
41+
// ---------- MAIN PROGRAM ----------
42+
//---------------------------------------------------------------------
43+
if (import.meta.main) {
44+
45+
printIterativeFactorial(0);
46+
printIterativeFactorial(1);
47+
printIterativeFactorial(2);
48+
printIterativeFactorial(3);
49+
printIterativeFactorial(5);
50+
printRecursiveFactorial(4);
51+
printRecursiveFactorial(0);
52+
printRecursiveFactorial(-1);
53+
printRecursiveFactorial(170);
54+
printIterativeFactorial(171);
55+
56+
// RUN: deno run Algorithms/Recursion/Factorial.ts
57+
}
58+
59+
// --------------------------- Terminal Output: ---------------------------
60+
// Iterative Factorial 0: 1
61+
// Iterative Factorial 1: 1
62+
// Iterative Factorial 2: 2
63+
// Iterative Factorial 3: 6
64+
// Iterative Factorial 5: 120
65+
// Recursive Factorial 4: 24
66+
// Recursive Factorial 0: 1
67+
// Input -1 is invalid -_-'
68+
// Recursive Factorial 170: 7.257415615307994e+306
69+
// Iterative Factorial 171: Infinity

0 commit comments

Comments
 (0)