It depends.
In most code, I want to be as descriptive as possible. Any other developer should be able to read through the code and understand my intentions. And there shouldn’t be any ambiguity about what purpose a variable serves. Are we iterating over results? Great. Call the loop index “resultIndex”.
There’s usually also code that can be used in a lot of contexts, maybe implementing some basic algorithm or a tiny piece of business logic. Maybe it’s even just a single line function. In that case, I stick to a,x, and y as parameters and I,j,k as iterates to emphasize how generic the code is meant to be.