如何在函数内编写嵌套的 if else 语句

如何在函数内编写嵌套的 if else 语句

我正在尝试使用以下 LaTex 编写以下算法算法2e包裹。

在此处输入图片描述

\IncMargin{1em}
\begin{algorithm}
\caption{An example} 
\SetNoFillComment
\DontPrintSemicolon
\BlankLine
\SetKwInOut{Input}{Input}\SetKwInOut{Output}{Output}
\Input{set ($x$), $y$, $Q$, $x_t$, epsilon (\varepsilon)} 
\Output{$G_r$}
\BlankLine
$x$ = \{$x_1$, $x_2$,\dots\}; $x_t$ \in $x$\;
\\$y$ = \{$y_1$, $y_2$,\dots\}\;
\SetKwFunction{Fmain}{main}   
\SetKwProg{Fn}{Function}{:}{end}
\Fn{\Fmain{}}{
\eIf {condition 1}
{do this\;
 do this\;
\eIf {condition 11}
{$x_t$ \leftarrow $\max\limits_y Q(x_t,.)$\;}
{x_t \leftarrow  $rand$\quad$num$\;}
$G_u$ =$x_t$\;
}
{$G_u$ = 0\;}
return $G_u$\;}
\end{algorithm}

但上面的代码给出了以下输出。有人能帮我修改一下我的代码吗?谢谢。

在此处输入图片描述

答案1

由于使用不一致来$分隔数学公式,因此输入时会出现很多(非常多)错误。

\documentclass{article}
\usepackage{algorithm2e}

\begin{document}

\IncMargin{1em}
\begin{algorithm}
\caption{An example} 
\SetKwInOut{Input}{Input}
\SetKwInOut{Output}{Output}
\SetKwFunction{Fmain}{main}   
\SetKwProg{Fn}{Function}{:}{end}
\SetNoFillComment
\DontPrintSemicolon

\BlankLine
\Input{set ($x$), $y$, $Q$, $x_t$, epsilon ($\varepsilon$)} 
\Output{$G_r$}
\BlankLine
$x = \{x_1, x_2,\dots\}$; $x_t\in x$\;
$y = \{y_1, y_2,\dots\}$\;
\BlankLine
\Fn{\Fmain{}}{
  \eIf {condition 1}{
    do this\;
    do this\;
    \eIf {condition 11}
      {$x_t \leftarrow \max\limits_y Q(x_t,.)$\;}
      {$x_t \leftarrow  \mathrm{rand}\,\mathrm{num}$\;}
    $G_u = x_t$\;
  }
  {$G_u = 0$\;}
return $G_u$\;}
\end{algorithm}

\end{document}

在此处输入图片描述

相关内容