#Java, 127 111 88 bytes
Java, 127 111 88 bytes
(s,r)->{for(int i=0;i++<s.length();)r+=i%2<1?new StringBuffer(s).reverse():s;return r;};
#Ungolfed test program
Ungolfed test program
public static void main(String[] args) {
BiFunction<String, String, String> func = (s, r) -> {
for (int i = 0; i++ < s.length();) {
r += i % 2 < 1 ? new StringBuffer(s).reverse() : s;
}
return r;
};
System.out.println(func.apply("Hello!", ""));
}