我是萨沙,我来回答。
第二次布匿战争失败的根本原因,在于汉尼拔没有能力攻陷罗马城。
因为汉尼拔大军是翻越阿尔卑斯山,到达意大利的。不要说笨重的攻城机械,就连稍重的武器也是无法携带的。
9万大军翻越阿尔卑斯山,只剩下4万人。
罗马人由于措手不及,所以连战连败。
不过,罗马的实力还是很强的,从男人中征兵超过20万人。
这些部队虽不是汉尼拔的对手,但保住罗马城还是没有问题的。
特拉西梅诺湖战役,汉尼拔一举歼灭罗马4万大军,
坎尼会战,8万罗马人几乎全军覆没,有7万人或者被歼灭或者被俘虏。
此战罗马人虽惨败,但汉尼拔也损失1万6700名士兵,超过了三分之一的实力。
然而,由于汉尼拔无法攻陷罗马城,所以实际上不能取得决定性的胜利。
而且罗马人实力强悍,不断和他进行消耗战。
汉尼拔实力逐步消耗殆尽,盟友也保持中立,罗马人连连反攻,迦太基陷入颓势。
这边,罗马人在前204年,直接攻打迦太基的老巢。
大西庇阿率领罗马大军到达西西里岛,组成一只35,000人的大军开拔到北非,在各地展开杀戮、掠夺。
迦太基元老院于是下达严命,要汉尼拔立刻返回祖国。
公元前203年秋天,汉尼拔终于离开转战十六年的意大利。
然而在迦太基老家的扎马战役,疲惫不堪的汉尼拔大军5万人损失4万,罗马人损失还不到1万人。
由此,汉尼拔大军基本覆灭,第二次布匿战争结束。