As a Lindenmayer system, the dragon curve can be presented by
angle 90°
initial string FX
string rewriting rules
X ↦ X+YF+
Y ↦ −FX−Y.
so we have a simple TikZ solution using lindenmayersystems
library:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\begin{document}
\fbox{%
\tikz[rotate=65]
\draw[green!60!black]
l-system
[l-system={
rule set={X -> X+YF+,Y->-FX-Y},
axiom=FX,
angle=90,
order=12,
step=5pt
}
];
}
\end{document}

Changing to order=14
and reducing the step to 2pt
gives:

And my computer reports pretty decent times:
real 0m48.379s
user 0m46.404s
sys 0m0.120s
However, order=15
already produces the dreadful TeX capacity exceeded!
error.
A little beamer
animation up to order 12:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\begin{document}
\begin{frame}
\centering
\tikz
\foreach \Valor in {1,2,...,12}
\draw<\Valor>[green!60!black]
l-system
[l-system={
rule set={X -> X+YF+,Y->-FX-Y},
axiom=FX,
angle=90,
order=\Valor,
step=3pt
}
];
\end{frame}
\end{document}

Rounded version
The rounded version is obtained simply by adding rounded corners=<length>
to the options for the \draw
; a little example of order 11:
\documentclass[border=3pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{lindenmayersystems}
\begin{document}
\tikz
\draw[green!60!black,rounded corners=4pt]
l-system
[l-system={
rule set={X -> X+YF+,Y->-FX-Y},
axiom=FX,
angle=90,
order=11,
step=10pt
}
];
\end{document}
The result:

Twindragon
The Davis-Knuth dragon can also be easily obtained:
\documentclass[tikz,border=3pt]{standalone}
\usetikzlibrary{lindenmayersystems}
\begin{document}
\tikz\draw[line width=1pt,green!60!black,rounded corners]
l-system
[l-system={
rule set={X -> X+YF,Y->FX-Y},
axiom=FX+FX+,
angle=90,
order=12,
step=10pt
}
];
\end{document}
