yeha thats what i tried for a while....
lets say the jump height is 6 and the gravity is 1, and releasing the key cuts vertical speed in half (with integer division), and the jump button is pressed on frame 0....
frame 0: vsp = 6, y = 6 (jump stuff happens after gravity in my code)
if the jump button is released on frame 1, first gravity happens (vsp = 5) and then the speed is cut in half (vsp = 2) and we get
frame 1: vsp = 2, y = 8
frame 2: vsp = 1, y = 9
total jump height = 9
but if the jump button is released on frame 2:
frame 1: vsp = 5, y = 11
frame 2: vsp = (4 div 2) = 2, y = 13
frame 3: vsp = 1, y = 14
total jump height = 14
suppose on frame 2, we recalculate vsp and y to match the first scenario. then first of all, vsp is cut from 5 to 1, which is a factor of 5 rather than 2 or 2.5, so the jump arc might look a bit less natural. but the real problem is that we have to drop from y = 11 to y = 9, so theres a weird 2 pixel backwards jump in position which will probably be noticeable..... so i think in general you cant do the recalculating thing without ruining the jump arc
sorry i mostly wrote this for myself to collect my thoughts but maybe its interesting