This is an inefficient program because this implementation of lazy integers does not memoize the result of previous calls to . It also involves considerable autoboxing and unboxing. What may not be obvious is that, at the end of the loop, the program has constructed a linked list of 11 objects and that all of the actual additions involved in computing the result are done in response to the call to a.eval() on the final line of code. This call recursively traverses the list to perform the necessary additions.
This is an inefficient program because this implementation of lazy integers does not memoize the result of previous calls to . It also involves considerable autoboxing and unboxing. What may not be obvious is that, at the end of the loop, the program has constructed a linked list of 11 objects and that all of the actual additions involved in computing the result are done in response to the call to aeval() on the final line of code. This call recursively traverses the list to perform the necessary additions.