| 245 | |
| 246 | template<typename Cache> |
| 247 | int getRecursive( int key, size_t &cost ) |
| 248 | { |
| 249 | cost = 1; |
| 250 | switch( key ) |
| 251 | { |
| 252 | case 0 : |
| 253 | return 0; |
| 254 | case 1 : |
| 255 | case 2 : |
| 256 | return 1; |
| 257 | default : |
| 258 | Cache &c = recursiveCache<Cache>(); |
| 259 | return c.get( key - 1 ) + c.get( key - 2 ); |
| 260 | } |
| 261 | } |
| 262 | |
| 263 | template<typename Cache> |
| 264 | Cache &recursiveCache() |