Since x + y = z can't be reversed without preserving input, this would have to use additional memory. What if you then have z + a = b? Can you now throw out x/y, or does it have to be reversible all the way back to the beginning?
1) Perform some reversible operation
2) Copy answer to another location (At some cost in heat)
3) Perform reverse operation, which rolls back memory to starting point
When you're done you have zeroed out memory, and the only costly operation was the copying of the answer.