didn't.因为赶上公交是短暂动词,与现在并没有关系,所以不能用现在完成时,只能用过去式.
would have done是虚拟语气,并不是完成时.这是对过去情况虚拟,主句:would have done 从句:过去完成时.提醒一下楼主,如果这句话里有yet,是要用haven't caught的.
算了,给一个网址,参考一下
再说一下,一般只有延续动词才可以表示对现在的影响.解释一下现在完成时的定义.
一个动作从过去开始,到一直持续现在结束.catch这里是赶上的意思,这是瞬间动作,不能说成一直持续赶上的状态的.