Solve SICP exercise 2.28