TheAlgorithms/C++
1.0.0
All the algorithms implemented in C++
Toggle main menu visibility
Loading...
Searching...
No Matches
factorial_memoization.cpp
Go to the documentation of this file.
1
22
23
#include <cassert>
// For test cases
24
#include <cstdint>
// For uint64_t
25
#include <vector>
// For std::vector
26
27
class
MemorisedFactorial
{
28
std::vector<std::uint64_t> known_values = {1};
29
30
public
:
36
std::uint64_t
operator()
(std::uint64_t n) {
37
if
(n >= this->known_values.size()) {
38
this->known_values.push_back(n * this->
operator
()(n - 1));
39
}
40
return
this->known_values.at(n);
41
}
42
};
43
44
void
test_MemorisedFactorial_in_order() {
45
auto
factorial
=
MemorisedFactorial
();
46
assert(
factorial
(0) == 1);
47
assert(
factorial
(1) == 1);
48
assert(
factorial
(5) == 120);
49
assert(
factorial
(10) == 3628800);
50
}
51
52
void
test_MemorisedFactorial_no_order() {
53
auto
factorial
=
MemorisedFactorial
();
54
assert(
factorial
(10) == 3628800);
55
}
56
61
int
main
() {
62
test_MemorisedFactorial_in_order();
63
test_MemorisedFactorial_no_order();
64
return
0;
65
}
MemorisedFactorial
Definition
factorial_memoization.cpp:27
MemorisedFactorial::operator()
std::uint64_t operator()(std::uint64_t n)
Definition
factorial_memoization.cpp:36
main
int main()
Main function.
Definition
generate_parentheses.cpp:110
math::factorial
uint64_t factorial(uint8_t n)
function to find factorial of given number
Definition
factorial.cpp:29
math
factorial_memoization.cpp
Generated by
1.18.0