#include <iostream>
#include <z/core/memoize.hpp>
#include <z/system/sleep.hpp>
using z::core::memoize;
int add(int a, int b) noexcept {
std::cout << "Calculating value, this should only happen once." << std::endl;
return a + b;
}
int main() {
memoize<int(int, int)> sum = add;
for (int i = 0; i < 10; ++i) {
std::cout << sum(10, 20) << ' ' << std::flush;
}
std::cout << std::endl;
memoize<int(int)> fib([&fib](int n) -> int {
if (n <= 1) {
return n;
}
return fib(n - 1) + fib(n - 2);
});
std::cout << "Fibonacci(10): " << fib(10) << std::endl;
std::cout << "Fibonacci(40): " << fib(40) << std::endl;
return 0;
}
void sleep(double ms) noexcept
Delays program execution temporarily.