如何用算法编写“重复 n 次”循环?

如何用算法编写“重复 n 次”循环?

在中algorithmic,我想编写一个如下所示的循环:

   repeat $n$ times:
      [command]
   end

我发现这个问题,解释了如何在 algorithm2e 中执行此操作,但它不适用于算法。

编辑:这是我现在所做的:

\documentclass{article}

\usepackage{algorithm}
\usepackage{algorithmic}

\begin{document}
\begin{algorithmic}[1] 
    \WHILE{Repeated at most $T$ times}
    \STATE Do Stuff
    \ENDWHILE
\end{algorithmic}

\end{document}

答案1

您可以使用以下内容定义新块algpseudocode::\RepeatN

\documentclass{article}
\usepackage{algpseudocode}
\usepackage{algorithm}

\begin{document}

\algdef{SE}[REPEATN]{RepeatN}{End}[1]{\algorithmicrepeat\ #1 \textbf{times}}{\algorithmicend}

\begin{algorithmic}
    \RepeatN{$n$}
    \State Do stuff
    \End
\end{algorithmic}

\end{document}

为了向后兼容,algorithmic您可以使用algcompatible

\documentclass{article}
\usepackage{algcompatible}
\usepackage{algorithm}

\begin{document}

\algdef{SE}[REPEATN]{REPEATN}{END}[1]{\algorithmicrepeat\ #1 \textbf{times}}{\algorithmicend}

\begin{algorithmic}
    \REPEATN{$n$}
    \STATE Do stuff
    \END
\end{algorithmic}

\end{document}

在此处输入图片描述

答案2

为了比较,仅使用包内部的版本algorithmic

\documentclass{article}

\usepackage{algorithm}
\usepackage{algorithmic}

\makeatletter
\newcommand{\REPEATN}[1]{\ALC@it\algorithmicrepeat%
\ #1 \textbf{times}\begin{ALC@rpt}}%
\newcommand{\ENDREPEAT}{\end{ALC@rpt}\ALC@it\algorithmicend}%
\makeatother

\begin{document}
\begin{algorithmic}[1] 
    \WHILE{Repeated at most $T$ times}
    \STATE Do Stuff
    \ENDWHILE
    \REPEATN{$n$}
    \STATE Do Stuff
    \ENDREPEAT
\end{algorithmic}

\end{document}

在此处输入图片描述

可以看出,DG' 的解决方案algcompatible更易于使用。

相关内容