My own view is that Hannibal should have marched on Rome immediately after Cannae as I feel this was the most likely point in the war when Hannibal could have achieved a decision.
Maharbal, his cavalry commander, is reputed to have been in favour of this move. It has been put forward that Hannibal would not have been able to take Rome by direct assult as the city was not completely defenseless and his army was not in a position to afford a long siege. This is probably true but the shock and despair in Rome immediately after the catastrophe of Cannae followed up by Hannibal appearing at the gates may just have pushed the Romans into capitulating. By all the yardsticks of the age they had lost the war and every other nation would have called it a day.