This question generalizes the famous Problem of Points whose consideration by Blaise Pascal and Pierre Fermat in the summer of 1654 is generally credited as the beginning of probability theory. The Problem of Points itself has been traced back to problems of insurance raised under 13th century (CE) Islamic contract law. It concerns the situation where each play has equal chances of $0.5$ to win.
Recursion is the answer--but it requires a nice trick to work. With you to start, your chances are about $12.4\%$, but if you go second they drop to $7.6\%$. An analysis and working code follow. The analysis is similar to that proposed by Fermat.
Fix $p=0.7$ and $q=0.85$. Let $f(m,n)$ be the chance you will win the game when you need $m$ questions to win, your opponent needs $n$, and it's your turn. Similarly, let $g(n,m)$ (notice the reversal of arguments!) be the chance your opponent will win when she needs $n$ questions to win, you need $m$, and it is her turn.
Obviously $f(0,n) = g(0,m) = 1$ whenever $n\gt 0$ and $m\gt 0$.
On your turn to play, either
With probability $p$ you give a correct answer. It is still your turn and your chances of winning have become $f(m-1,n)$.
With probability $1-p$ your answer is wrong. It is now your opponent's turn. Her chances of winning are $g(n,m)$, so your chances of winning are $1-g(n,m)$.
Therefore
$$f(m,n) = p f(m-1,n) + (1-p)(1 - g(n,m)).$$
There is a comparable relation for $g$,
$$g(n,m) = q g(n-1,m) + (1-q)(1 - f(m,n)).$$
Unfortunately, these relations do not suffice for a recursive solution. The problem is that the $g(n,m)$ at the end will be expressed in terms of $g(n-1,m)$ and $f(m,n)$--but that brings us right back where we were before.
The solution is to replace $g(n,m)$ in the preceding equation with its equivalent:
$$\eqalign{
f(m,n) &= p f(m-1,n) + (1-p)(1 - \color{blue}{g(n,m)}) \\
&= p f(m-1,n) + (1-p)(1 - (\color{blue}{q g(n-1,m) + (1-q)(1 - f(m,n))})) .
}$$
Isolating $f(m,n)$ yields
$$(1 - (1-p)(1-q))f(m,n) = p f(m-1,n) + q(1-p)\left(1 - g(n-1,m)\right).$$
Similarly
$$(1 - (1-p)(1-q))g(n,m) = q g(n-1,m) + p(1-q)\left(1 - f(m-1,n)\right).$$
Each lets us solve for $f$ or $g$ in terms of values of the other where $m+n$ has decreased by $1$. This will assuredly terminate with one of $m$ or $n$ equal to $0$ within $m+n-1$ moves. The algorithm, implemented as a dynamic program, requires $O(mn)$ time and space, making it practicable for $mn \lt 10^6$, more or less (where it will start taking around a minute in R
or Mathematica, for instance).
With $m=n=20$, $p=0.7$, and $q=0.85$, we easily find
$$f(20,20) \approx 0.1238327668,\ g(20,20) \approx 0.9238111399.$$
The following is working R
code.
f <- function(a, b, p, q, F, G) {
if (missing(F)) F <- matrix(NA, a+1, b+1)
if (missing(G)) G <- matrix(NA, b+1, a+1)
F[1, ] <- G[1, ] <- 1
d <- 1 - (1-p)*(1-q)
pp <- p / d; pq <- (1-p)*q / d
qq <- q / d; qp <- (1-q)*p / d
f <- function(m, n) {
x <- F[m+1, n+1]
if (is.na(x)) F[m+1, n+1] <<- x <- pp * f(m-1, n) + pq * (1 - g(n-1, m))
return (x)
}
g <- function(m, n) {
x <- G[m+1, n+1]
if (is.na(x)) G[m+1, n+1] <<- x <- qq * g(m-1, n) + qp * (1 - f(n-1, m))
return (x)
}
return (list(Value=f(a, b), F=F, G=G, a=a, b=b))
}
m <- n <- 20
p <- 0.70; q <- 0.85
x <- f(m, n, p, q)
y <- f(n, m, q, p, x$G, x$F) # Don't recalculate the stored arrays
cat("Your chances of winning (if you start) are", 100*x$Value, "%\n")
cat("If you do not start they are", 100*(1 - y$Value), "%\n")