If you have a recursive function, it needs to have a base case. That is, some condition which causes it to end. Otherwise it's just going to keep calling itself.
Why does it need to be recursive? These things are normally worked with simple equations.
Prefer double rather than float. The precision of float is easily exceeded.
There is no number assigned to anything. You can't divide nothing by two, etc. You need to give values to gravity, height, thrustforce, mass, and time_t elapsed. When you call this function are you putting a number for each of these? And are they floating point numbers (1.00, not just 1, etc.)?
Using the input you provided I get the following output:
---------------
9810
190
0.19
2.375
Value Returned: 2.375
Why should i use difftime()? Whats its advantage?
One big advantage is that if you used difftime() you wouldn't need to be casting the time_t to a float. And look at what the documentation from this site says about using a time_t: http://www.cplusplus.com/reference/ctime/time_t/
Portable programs should not use values of this type directly, but always rely on calls to elements of the standard library to translate them to portable types.
And understand that a time_t is probably some unsigned type.