20% of the Roman male population had been killed in the 3 previous battles. Why didn’t he follow up a devastating defeat by taking advantage of Rome's weakened state and panic by laying seige to the city?
Mary Beard addresses this in her book SPQR. I'll answer from memory here and crack it open when I get home tonight.
Basically, Hannibal felt it was too risky to attack Rome directly, and wanted to starve them of allies first. Rome at that time wasn't an empire in the sense that we think of it today. The term "imperium", which we translate as "empire", had a meaning more along the lines of power or influence. The Roman Imperium was the geographical extent to which a Roman Senator could visit and tell the local government "jump", and the local government would ask "how high?" (at the time of the Second Punic War, the Roman Imperium covered the Italian peninsula, plus a bit extra). Rome didn't yet have provinces or governors. When they conquered a town, it became their "ally" (more accurately, client-state). The citizens of the conquered town didn't become Romans- the idea of extending Roman citizenship to conquered areas didn't occur to anyone for at least another century. Rome's client states were self-governing, and Rome didn't bother them much unless they wanted something, and what they usually wanted was men for their armies. Rome would conquer a town, recruit all the local boys, then march their army off to go conquer someone else. This strategy kept Rome's allies remarkably loyal, since Rome was employing (and paying) a sizable chunk of their fighting population, and facilitated Rome's rapid expansion of power, since they had the ability to raise large armies very rapidly.
Hannibal didn't have any real supply lines to Carthage while he was in Italy (the lack of a safe sea route was why he hauled his elephants over the Alps in the first place). So, he was having to supply his armies from the people he conquered. This meant that he couldn't dedicate his full forces to a protracted siege of Rome (and it would have been a siege, Hannibal's army was not so powerful that he could be certain of taking the city right off the bat). Some of his forces would have had to be dedicated to conquering more of Rome's allies to keep his army supplied with food, money, and men. Add this to Rome's almost uncanny ability to essentially pull massive armies out of their asses by sourcing manpower from their allies, and Hannibal deemed that the best strategy to defeat Rome was to deprive it of support from its allies/client states (cut of the legs of the beast, as opposed to the head).
While Hannibal was mucking about the Italian countryside, Rome's Italian allies were growing increasingly frustrated with Rome's inability to protect them from Hannibal's invading forces. Hannibal's goal was to convince Rome's allies to join him because he was a bigger threat than potential Roman retaliation.
Up until the Battle of Canae, Rome's overall strategy had been one of attrition- harrying Hannibal's forces and cutting them off from supplies, but avoiding an all-out confrontation. The concern that their allies might defect to Hannibal was a major factor in the Roman Senate's decision to remove the guy in charge of the campaign (Quintus Fabius Maximus), and instead try to defeat Hannibal in a decisive battle. After that went about as well as diving into a bucket of knives, they put Maximus in charge again, and his strategy was so successful that he earned the nickname "the Great Delayer", and became known as the father of guerilla warfare.