Dynamic Programming
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
void main() {
addTo80(n){
print('long time ');
return n + 80;
}
memoizedAddTo80(){
var cache = {};
return (n){
if(cache.containsKey(n)){
return cache;
}else{
cache[n] = n + 80;
return cache;
}
} ;
}
var calculations = 0;
fibonacci(n){
calculations++;
if(n < 2){
return n;
}
return fibonacci(n-1) + fibonacci(n-2);
}
fibonacciMaster(){
var cache = {};
int fib (n){
int calculations = 0;
calculations++;
if(cache.containsKey(n)){
return cache[n];
}else{
if(n < 2){
return n;
}else{
cache[n] = fib(n-1) + fib(n-2);
return cache[n];
}
}
}
return (int n) {
int result = fib(n);
print("Total calculations: $calculations"); // Now prints correct value
return result;
};
}
var memoized = memoizedAddTo80();
var faster = fibonacciMaster();
// print(fibonacci(8));
print(calculations);
print(faster(8));
// print('1 ${memoized(5)}');
// print('2 ${memoized(4)}');
}
Dart
INFO