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