Here is a little Scala program for arbitrary n.
def puzzle(n: Int): Double =
if (n == 2) {
1.0/4.0
} else if (n % 2 == 1) {
(puzzle(n - 1) * (n - 1) * (n - 1) + (n + (n - 1))) / (n * n)
} else if (n % 2 == 0) {
(puzzle(n - 1) * (n - 1) * (n - 1)) / (n * n)
} else {
??? // never reached anyway
}
@main def main: Unit =
val height = 10
val percentage = puzzle(height)
println(s"$percentage")
which prints
> run
[info] running main
0.45