Skip to content

Commit bac05e3

Browse files
authored
Merge pull request kelvins#301 from kelvins/feature/split-fibonacci
Split Fibonacci
2 parents 513070d + 22473ff commit bac05e3

38 files changed

+699
-219
lines changed

README.md

Lines changed: 127 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -935,59 +935,175 @@ In order to achieve greater coverage and encourage more people to contribute to
935935
</td>
936936
</tr>
937937
<tr>
938-
<td><a href="https://en.wikipedia.org/wiki/Fibonacci_sequence">Fibonacci</a></td>
938+
<td><a href="https://en.wikipedia.org/wiki/Fibonacci_sequence">Fibonacci (Iterative)</a></td>
939939
<td> <!-- C -->
940-
<a href="./src/c/Fibonacci.c">
940+
<a href="./src/c/FibonacciIterative.c">
941941
<img align="center" height="25" src="./logos/c.svg" />
942942
</a>
943943
</td>
944944
<td> <!-- C++ -->
945-
<a href="./src/cpp/Fibonacci.cpp">
945+
<a href="./src/cpp/FibonacciIterative.cpp">
946946
<img align="center" height="25" src="./logos/cplusplus.svg" />
947947
</a>
948948
</td>
949949
<td> <!-- Java -->
950-
<a href="./src/java/Fibonacci.java">
950+
<a href="./src/java/FibonacciIterative.java">
951951
<img align="center" height="25" src="./logos/java.svg" />
952952
</a>
953953
</td>
954954
<td> <!-- Python -->
955-
<a href="./src/python/fibonacci.py">
955+
<a href="./src/python/fibonacci_iterative.py">
956956
<img align="center" height="25" src="./logos/python.svg" />
957957
</a>
958958
</td>
959959
<td> <!-- Go -->
960-
<a href="./src/go/fibonacci.go">
960+
<a href="./src/go/fibonacci_iterative.go">
961961
<img align="center" height="25" src="./logos/golang.svg" />
962962
</a>
963963
</td>
964964
<td> <!-- Ruby -->
965-
<a href="./src/ruby/fibonacci.rb">
965+
<a href="./src/ruby/fibonacci_iterative.rb">
966966
<img align="center" height="25" src="./logos/ruby.svg" />
967967
</a>
968968
</td>
969969
<td> <!-- JavaScript -->
970-
<a href="./src/javascript/Fibonacci.js">
970+
<a href="./src/javascript/FibonacciIterative.js">
971971
<img align="center" height="25" src="./logos/javascript.svg" />
972972
</a>
973973
</td>
974974
<td> <!-- Swift -->
975-
<a href="./src/swift/fibonacci.swift">
975+
<a href="./src/swift/fibonacciIterative.swift">
976976
<img align="center" height="25" src="./logos/swift.svg" />
977977
</a>
978978
</td>
979979
<td> <!-- Rust -->
980-
<a href="./src/rust/fibonacci.rs">
980+
<a href="./src/rust/fibonacci_iterative.rs">
981981
<img align="center" height="25" src="./logos/rust.svg" />
982982
</a>
983983
</td>
984984
<td> <!-- Scala -->
985+
<a href="./src/scala/FibonacciIterative.scala">
986+
<img align="center" height="25" src="./logos/scala.svg" />
987+
</a>
988+
</td>
989+
<td> <!-- Kotlin -->
990+
<a href="./src/kotlin/FibonacciIterative.kt">
991+
<img align="center" height="25" src="./logos/kotlin.svg" />
992+
</a>
993+
</td>
994+
</tr>
995+
<tr>
996+
<td><a href="https://en.wikipedia.org/wiki/Fibonacci_sequence">Fibonacci (Recursive)</a></td>
997+
<td> <!-- C -->
998+
<a href="./src/c/FibonacciRecursive.c">
999+
<img align="center" height="25" src="./logos/c.svg" />
1000+
</a>
1001+
</td>
1002+
<td> <!-- C++ -->
1003+
<a href="./src/cpp/FibonacciRecursive.cpp">
1004+
<img align="center" height="25" src="./logos/cplusplus.svg" />
1005+
</a>
1006+
</td>
1007+
<td> <!-- Java -->
1008+
<a href="./src/java/FibonacciRecursive.java">
1009+
<img align="center" height="25" src="./logos/java.svg" />
1010+
</a>
1011+
</td>
1012+
<td> <!-- Python -->
1013+
<a href="./src/python/fibonacci_recursive.py">
1014+
<img align="center" height="25" src="./logos/python.svg" />
1015+
</a>
1016+
</td>
1017+
<td> <!-- Go -->
1018+
<a href="./src/go/fibonacci_recursive.go">
1019+
<img align="center" height="25" src="./logos/golang.svg" />
1020+
</a>
1021+
</td>
1022+
<td> <!-- Ruby -->
1023+
<a href="./src/ruby/fibonacci_recursive.rb">
1024+
<img align="center" height="25" src="./logos/ruby.svg" />
1025+
</a>
1026+
</td>
1027+
<td> <!-- JavaScript -->
1028+
<a href="./src/javascript/FibonacciRecursive.js">
1029+
<img align="center" height="25" src="./logos/javascript.svg" />
1030+
</a>
1031+
</td>
1032+
<td> <!-- Swift -->
1033+
<a href="./src/swift/fibonacciRecursive.swift">
1034+
<img align="center" height="25" src="./logos/swift.svg" />
1035+
</a>
1036+
</td>
1037+
<td> <!-- Rust -->
1038+
<a href="./src/rust/fibonacci_recursive.rs">
1039+
<img align="center" height="25" src="./logos/rust.svg" />
1040+
</a>
1041+
</td>
1042+
<td> <!-- Scala -->
1043+
<a href="./src/scala/FibonacciRecursive.scala">
1044+
<img align="center" height="25" src="./logos/scala.svg" />
1045+
</a>
1046+
</td>
1047+
<td> <!-- Kotlin -->
1048+
<a href="./src/kotlin/FibonacciRecursive.kt">
1049+
<img align="center" height="25" src="./logos/kotlin.svg" />
1050+
</a>
1051+
</td>
1052+
</tr>
1053+
<tr>
1054+
<td><a href="https://en.wikipedia.org/wiki/Fibonacci_sequence">Fibonacci (Memoization)</a></td>
1055+
<td> <!-- C -->
1056+
<a href="./src/c/FibonacciMemoization.c">
1057+
<img align="center" height="25" src="./logos/c.svg" />
1058+
</a>
1059+
</td>
1060+
<td> <!-- C++ -->
1061+
<a href="./src/cpp/FibonacciMemoization.cpp">
1062+
<img align="center" height="25" src="./logos/cplusplus.svg" />
1063+
</a>
1064+
</td>
1065+
<td> <!-- Java -->
1066+
<a href="./src/java/FibonacciMemoization.java">
1067+
<img align="center" height="25" src="./logos/java.svg" />
1068+
</a>
1069+
</td>
1070+
<td> <!-- Python -->
1071+
<a href="./src/python/fibonacci_memoization.py">
1072+
<img align="center" height="25" src="./logos/python.svg" />
1073+
</a>
1074+
</td>
1075+
<td> <!-- Go -->
1076+
<a href="./src/go/fibonacci_memoization.go">
1077+
<img align="center" height="25" src="./logos/golang.svg" />
1078+
</a>
1079+
</td>
1080+
<td> <!-- Ruby -->
1081+
<a href="./src/ruby/fibonacci_memoization.rb">
1082+
<img align="center" height="25" src="./logos/ruby.svg" />
1083+
</a>
1084+
</td>
1085+
<td> <!-- JavaScript -->
9851086
<a href="./CONTRIBUTING.md">
9861087
<img align="center" height="25" src="./logos/github.svg" />
9871088
</a>
9881089
</td>
1090+
<td> <!-- Swift -->
1091+
<a href="./src/swift/fibonacciMemoization.swift">
1092+
<img align="center" height="25" src="./logos/swift.svg" />
1093+
</a>
1094+
</td>
1095+
<td> <!-- Rust -->
1096+
<a href="./src/rust/fibonacci_memoization.rs">
1097+
<img align="center" height="25" src="./logos/rust.svg" />
1098+
</a>
1099+
</td>
1100+
<td> <!-- Scala -->
1101+
<a href="./src/scala/FibonacciMemoization.scala">
1102+
<img align="center" height="25" src="./logos/scala.svg" />
1103+
</a>
1104+
</td>
9891105
<td> <!-- Kotlin -->
990-
<a href="./src/kotlin/Fibonacci.kt">
1106+
<a href="./src/kotlin/FibonacciMemoization.kt">
9911107
<img align="center" height="25" src="./logos/kotlin.svg" />
9921108
</a>
9931109
</td>

src/c/Fibonacci.c

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/c/FibonacciIterative.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include <stdio.h>
2+
3+
int fibonacci(int number) {
4+
int last_number = 0;
5+
int current_number = 1;
6+
7+
for (int index = 0; index < number; ++index) {
8+
int temp = current_number;
9+
current_number += last_number;
10+
last_number = temp;
11+
}
12+
return last_number;
13+
}
14+
15+
int main() {
16+
printf("Fibonacci Iterative: %d\n", fibonacci(12));
17+
return 0;
18+
}

src/c/FibonacciMemoization.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include <stdio.h>
2+
3+
#define MAX_N 100 // Define the maximum number for which you want to calculate Fibonacci
4+
5+
int memo[MAX_N]; // Memoization table to store computed values
6+
7+
int fibonacci(int number) {
8+
if (number <= 1) {
9+
return number;
10+
}
11+
if (memo[number] != -1) {
12+
return memo[number];
13+
}
14+
15+
memo[number] = fibonacci(number - 1) + fibonacci(number - 2);
16+
return memo[number];
17+
}
18+
19+
int main(void) {
20+
// Initialize the memoization table with -1 (uncomputed)
21+
for (int i = 0; i < MAX_N; i++) {
22+
memo[i] = -1;
23+
}
24+
25+
printf("memoization: %d\n", fibonacci(12));
26+
return 0;
27+
}

src/c/FibonacciRecursive.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include <stdio.h>
2+
3+
int fibonacci(int number) {
4+
if (number == 0) {
5+
return 0;
6+
} else if (number == 1) {
7+
return 1;
8+
} else {
9+
return fibonacci(number - 1) + fibonacci(number - 2);
10+
}
11+
}
12+
13+
int main(void) {
14+
int test_nbr = 12;
15+
16+
printf("recursive: %d\n", fibonacci(test_nbr));
17+
return 0;
18+
}

src/cpp/Fibonacci.cpp

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/cpp/FibonacciIterative.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#include <iostream>
2+
3+
using namespace std;
4+
5+
int fibonacci(int n) {
6+
int last = 0;
7+
int curr = 1;
8+
for (int index = 0; index < n; ++index) {
9+
int temp = curr;
10+
curr += last;
11+
last = temp;
12+
}
13+
return last;
14+
}
15+
16+
int main() {
17+
cout << fibonacci(12) << endl;
18+
}

src/cpp/FibonacciMemoization.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <iostream>
2+
#include <vector>
3+
4+
using namespace std;
5+
6+
vector<int> memo;
7+
8+
int fibonacci(int n) {
9+
if (n <= 1) {
10+
return n;
11+
}
12+
if (memo[n] != -1) {
13+
return memo[n];
14+
}
15+
16+
memo[n] = fibonacci(n - 1) + fibonacci(n - 2);
17+
return memo[n];
18+
}
19+
20+
int main() {
21+
int test_nbr = 12;
22+
23+
// Initialize the memoization table with -1 (uncomputed)
24+
memo.assign(test_nbr + 1, -1);
25+
26+
cout << "memoization: " << fibonacci(test_nbr) << endl;
27+
return 0;
28+
}

src/cpp/FibonacciRecursive.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#include <iostream>
2+
3+
using namespace std;
4+
5+
int fibonacci(int n) {
6+
if (n <= 1) {
7+
return n;
8+
}
9+
return fibonacci(n-1) + fibonacci(n-2);
10+
}
11+
12+
int main() {
13+
cout << fibonacci(12) << endl;
14+
}

0 commit comments

Comments
 (0)