在这种情况下我该如何使用 While 命令

在这种情况下我该如何使用 While 命令

我正在尝试编写算法。但是,我无法使用\While命令,因为我收到一条错误消息,说some blocks are not closing.我真的不知道如何解决这个问题。有什么帮助吗?

这是我使用的代码。**请注意,我从这个网站获取了这个示例。将算法的输入和输出左对齐

以下是代码:

\documentclass[sigconf]{acmart}
\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\algrenewcommand\algorithmicrequire{\textbf{Input:}}
\algrenewcommand\algorithmicensure{\textbf{Output:}}
\begin{document}
    \begin{algorithm}
        \caption{Dsfdgfgskj sdfgfkjsdl sdfggjlkj fgsdt}
        \label{alg:ALG1}
        \begin{algorithmic}
        \Require $x$ - decision tree
        \Ensure $abc$ is $x$ in Txx Bxxxxx Gxxxx

我想\While在这里使用命令。像这样:

\While{(not converged \& i < maximum number of iteration)}{
            \Function {UpdateNodes}{$x$}
                \If {  $wrejkwe$ ($rw$) trwer tewwerl }
                %       \COMMENT { 
                \State {jklrjkljfgkljlkj  kjkldfj gfdsdf }
                \State  Set fdgsdsd
                \ForAll  {$j=1$ to $N (x)$}
                \State        Call $fgsd(x)$  
                \State        Set $sfgdfgd =sfdg + fgds $ 

                \EndFor 
                \EndIf
            \EndFunction

}##end of While. 

            \end{algorithmic}
        \end{algorithm}
    \end{document}

\While当我尝试使用命令时出现错误。

答案1

您应该删除任何#%用于注释),置于<数学模式并用结束 while 循环\EndWhile

\documentclass[sigconf]{acmart}
\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\algrenewcommand\algorithmicrequire{\textbf{Input:}}
\algrenewcommand\algorithmicensure{\textbf{Output:}}
\begin{document}
    \begin{algorithm}
        \caption{Dsfdgfgskj sdfgfkjsdl sdfggjlkj fgsdt}
        \label{alg:ALG1}
        \begin{algorithmic}
        \Require $x$ - decision tree
        \Ensure $abc$ is $x$ in Txx Bxxxxx Gxxxx
                \While{(not converged \& $i < \text{maximum number of iteration}$)}
            \Function {UpdateNodes}{$x$}
                \If {  $wrejkwe$ ($rw$) trwer tewwerl }
                %       \COMMENT { 
                \State {jklrjkljfgkljlkj  kjkldfj gfdsdf }
                \State  Set fdgsdsd
                \ForAll  {$j=1$ to $N (x)$}
                \State        Call $fgsd(x)$  
                \State        Set $sfgdfgd =sfdg + fgds $ 

                \EndFor 
                \EndIf
            \EndFunction
                \EndWhile
         \end{algorithmic}
    \end{algorithm}
\end{document}

相关内容