Skip to content

Commit 512efd1

Browse files
authored
fix: Update documentations and tests for fibonacci.cpp (#2793)
* Update fibonacci.cpp * update documentation * Update documentation
1 parent faff217 commit 512efd1

File tree

1 file changed

+40
-43
lines changed

1 file changed

+40
-43
lines changed

math/fibonacci.cpp

+40-43
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,65 @@
11
/**
22
* @file
3-
* @brief Generate fibonacci sequence
3+
* @brief n-th [Fibonacci
4+
* number](https://en.wikipedia.org/wiki/Fibonacci_sequence).
45
*
5-
* Calculate the the value on Fibonacci's sequence given an
6-
* integer as input.
6+
* @details
7+
* Naive recursive implementation to calculate the n-th Fibonacci number.
78
* \f[\text{fib}(n) = \text{fib}(n-1) + \text{fib}(n-2)\f]
89
*
910
* @see fibonacci_large.cpp, fibonacci_fast.cpp, string_fibonacci.cpp
1011
*/
11-
#include <cassert>
12-
#include <iostream>
12+
#include <cassert> /// for assert
13+
#include <iostream> /// for IO operations
1314

1415
/**
15-
* Recursively compute sequences
16-
* @param n input
17-
* @returns n-th element of the Fbinacci's sequence
16+
* @namespace math
17+
* @brief Math algorithms
18+
*/
19+
namespace math {
20+
/**
21+
* @namespace fibonacci
22+
* @brief Functions for Fibonacci sequence
23+
*/
24+
namespace fibonacci {
25+
/**
26+
* @brief Function to compute the n-th Fibonacci number
27+
* @param n the index of the Fibonacci number
28+
* @returns n-th element of the Fibonacci's sequence
1829
*/
1930
uint64_t fibonacci(uint64_t n) {
20-
/* If the input is 0 or 1 just return the same
21-
This will set the first 2 values of the sequence */
31+
// If the input is 0 or 1 just return the same (Base Case)
32+
// This will set the first 2 values of the sequence
2233
if (n <= 1) {
2334
return n;
2435
}
2536

26-
/* Add the last 2 values of the sequence to get next */
37+
// Add the preceding 2 values of the sequence to get next
2738
return fibonacci(n - 1) + fibonacci(n - 2);
2839
}
40+
} // namespace fibonacci
41+
} // namespace math
2942

3043
/**
31-
* Function for testing the fibonacci() function with a few
32-
* test cases and assert statement.
44+
* @brief Self-test implementation
3345
* @returns `void`
34-
*/
46+
*/
3547
static void test() {
36-
uint64_t test_case_1 = fibonacci(0);
37-
assert(test_case_1 == 0);
38-
std::cout << "Passed Test 1!" << std::endl;
39-
40-
uint64_t test_case_2 = fibonacci(1);
41-
assert(test_case_2 == 1);
42-
std::cout << "Passed Test 2!" << std::endl;
43-
44-
uint64_t test_case_3 = fibonacci(2);
45-
assert(test_case_3 == 1);
46-
std::cout << "Passed Test 3!" << std::endl;
47-
48-
uint64_t test_case_4 = fibonacci(3);
49-
assert(test_case_4 == 2);
50-
std::cout << "Passed Test 4!" << std::endl;
51-
52-
uint64_t test_case_5 = fibonacci(4);
53-
assert(test_case_5 == 3);
54-
std::cout << "Passed Test 5!" << std::endl;
55-
56-
uint64_t test_case_6 = fibonacci(15);
57-
assert(test_case_6 == 610);
58-
std::cout << "Passed Test 6!" << std::endl << std::endl;
48+
assert(math::fibonacci::fibonacci(0) == 0);
49+
assert(math::fibonacci::fibonacci(1) == 1);
50+
assert(math::fibonacci::fibonacci(2) == 1);
51+
assert(math::fibonacci::fibonacci(3) == 2);
52+
assert(math::fibonacci::fibonacci(4) == 3);
53+
assert(math::fibonacci::fibonacci(15) == 610);
54+
assert(math::fibonacci::fibonacci(20) == 6765);
55+
std::cout << "All tests have passed successfully!\n";
5956
}
6057

61-
/// Main function
58+
/**
59+
* @brief Main function
60+
* @returns 0 on exit
61+
*/
6262
int main() {
63-
test();
64-
int n = 0;
65-
std::cin >> n;
66-
assert(n >= 0);
67-
std::cout << "F(" << n << ")= " << fibonacci(n) << std::endl;
63+
test(); // run self-test implementations
64+
return 0;
6865
}

0 commit comments

Comments
 (0)