In the book Algorithm design manual (page 16), proof by induction for correctness of below increment algorithm is discussed.
Increment(y)
if (y == 0) return 1;
else if (y % 2 == 1) return 2 * Increment(floor(y/2));
else return y + 1;
But I am confused at one point(or assumption) in the discussion. Requesting for a solution (proof of correctness by induction) to understand better.