fix self-tests and unsigned comparision to zero

refer #897 and https://lgtm.com/projects/g/TheAlgorithms/C-Plus-Plus/rev/pr-f6e7cda8faf908e87511f30e782190233bdee68c
This commit is contained in:
Krishna Vedala
2020-06-25 09:14:21 -04:00
parent 6365881e68
commit 5939792a9d

View File

@@ -32,10 +32,33 @@ uint64_t double_factorial_recursive(uint64_t n) {
return n * double_factorial_recursive(n - 2);
}
/// main function
int main() {
uint64_t n;
std::cin >> n;
assert(n >= 0);
std::cout << double_factorial_iterative(n);
/** Wrapper to run tests using both recursive and iterative implementations.
* The checks are only valid in debug builds due to the use of `assert()`
* statements.
* \param [in] n number to check double factorial for
* \param [in] expected expected result
*/
void test(uint64_t n, uint64_t expected) {
assert(double_factorial_iterative(n) == expected);
assert(double_factorial_recursive(n) == expected);
}
/**
* Test implementations
*/
void tests() {
std::cout << "Test 1:\t n=5\t...";
test(5, 15);
std::cout << "passed\n";
std::cout << "Test 2:\t n=15\t...";
test(15, 2027025);
std::cout << "passed\n";
std::cout << "Test 3:\t n=0\t...";
test(0, 1);
std::cout << "passed\n";
}
/// main function
int main() { tests(); }