How to show category image if no featured image is set?

You have a typo. In your loop you’re checking has_post_thumbnail($recent["ID"]), but $recent['ID'] won’t be set because the variable for each post in your foreach is $decent:

foreach( $recent as $decent ){