by realizing this code _recursively_ and _iteratively_. Use `x0` as recursion break condition or initial value $`x_0`$ and return the value `x_N`
as your approximation of the square-root of `a`.
Try your code with a recursion depth of $`N=5, 10, 100`$ for $`a=10`$ and initial value $`x_0=3`$.
How to check the error you have made? How to choose the initial value `x0` and the iteration count `N`? How would you design your implementation
`double sqrt(double a)` of a square-root function and which version of the implementation above would you choose?
### Notes and additional questions:
- You can use the `std::sqrt` function from `<cmath>` as a comparison.
- (optional) Measure the time of your implementation and compare it against the time of the `std::sqrt` implementation. Therefore, either use the `Timer`
in the lecture material folder, or user the Google micro benchmarking suite: https://github.com/google/benchmark
- (optional) What happens if your change your type from `double` to `float`. Do you see any difference in accuracy and performance?