адержка никак не работает, и браузер, более 40 тысяч раз выполнив рекурсию(проверено) выдает ошибку Maximum call stack size exceeded.Так и должно быть. Если откинуть неиспользуемый setTimeout, то выйдет так:
function change(color){
change(color)
}