Here's the bottom line: all induction steps that relate to specific values โโof n should relate to a specific function T (n), not O () notations!
The O (M (n)) notation is a statement about the behavior of the entire function from the size of the task to the guarantee of performance (asymptotically, since n increases unboundedly). The goal of your induction is to determine the performance-related T (n), which can then be simplified (by dropping constants and lower order coefficients) to O (M (n)).
In particular, one problem with your proof is that you cannot get from your statement purely about O () the statement about T (n) for a given n. O () allows you to ignore a constant coefficient for an entire function; this does not allow you to ignore the constant factor again and again when building the same function recursively ...
You can use the O () notation to simplify your proof by demonstrating:
T(n) = F(n) + O(something less significant than F(n))
and propagating this predicate in the usual inductive way. But you need to keep a constant factor F (): this constant factor is directly related to solving your gap between shoots!
source share