算法返回命令 = 0

算法返回命令 = 0

您能告诉我在算法中使用 return 命令有什么问题吗?当我添加

\RETURN $C

到我的 LaTeX 文档我得到

return C =0,

我 需要 的 只是return C

\begin{algorithm}                      % enter the algorithm environment
  \caption{ lloyd's kmeans}      
  \label{alg1}                          
  \begin{algorithmic}[1]                    % enter the algorithmienvironment
    \RETURN{$C$}
  \end{algorithmic}
\end{algorithm}

我得到了两个额外的字符=0。我想知道它是从哪里来的。如果有帮助的话,在生成的错误日志中有“缺失数字,视为零”,并且为 \ifnum 插入了缺失 =。

答案1

你可能结合使用algorithmicalgorithmicx包。后者可以完全替代前者,因此你应该不是将它们一起加载(按顺序加载时会重现错误\usepackage{algorithmic,algcompatible})。我建议按以下方式使用它:

在此处输入图片描述

\documentclass{article}

\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\usepackage{algcompatible}% http://ctan.org/pkg/algorithmicx

% Define keyword and construction of \RETURN
\algnewcommand\algorithmicreturn{\textbf{return}}
\algnewcommand\RETURN{\State \algorithmicreturn}%
\begin{document}
\begin{algorithm}
  \caption{My algorithm}\label{alg1}                          
  \begin{algorithmic}[1]
    \RETURN{} $C$
  \end{algorithmic}
\end{algorithm}
\end{document}

这需要您定义\RETURN关键字才能正常工作。可能还需要定义其他关键字才能正常工作。但是,它们可以用相同的方式完成。


根据您发布的代码,以下可能是定义算法结构的一种方式:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\usepackage{algorithm,algcompatible}% http://ctan.org/pkg/{algorithms,algorithmicx}
\algnewcommand\algorithmicreturn{\textbf{return}}
\algnewcommand\RETURN{\algorithmicreturn}
\algnewcommand\algorithmicprocedure{\textbf{procedure}}
\algnewcommand\PROCEDURE{\item[\algorithmicprocedure]}%
\algnewcommand\algorithmicendprocedure{\textbf{end procedure}}
\algnewcommand\ENDPROCEDURE{\item[\algorithmicendprocedure]}%
\algnewcommand{\algvar}[1]{{\text{\ttfamily\detokenize{#1}}}}
\algnewcommand{\algarg}[1]{{\text{\ttfamily\itshape\detokenize{#1}}}}
\algnewcommand{\algproc}[1]{{\text{\ttfamily\detokenize{#1}}}}
\algnewcommand{\algassign}{\leftarrow}
\begin{document}
\begin{algorithm}% enter the algorithm environment
\caption{procedure DOWNLOAD}% give the algorithm a caption
\label{SaS:DOWNLOAD}
\begin{algorithmic}[1]% enter the algorithmic environment
\raggedright
\PROCEDURE \algvar{user_request}(\algarg{follower_id}, \algarg{friend_id}, \algarg{content_id}, \algarg{home_server}, \algarg{friend_surrogate})
  \REQUIRE \algarg{user_id}, \algarg{home_server}
  \ENSURE URL of requested content
  \STATE $\algvar{content} \algassign \algproc{request_redirect}(\algarg{content_id})$
  \IF{$\algvar{content} \neq \algvar{server}$}
    \STATE \algproc{schedule_pull}(\algarg{content_id}, \algvar{server})
  \ENDIF
 \STATE \RETURN{} \algvar{content_host}
\ENDPROCEDURE
\end{algorithmic}
\end{algorithm}
\end{document}

为了持续的,定义处理类似项目格式的宏。

答案2

我的代码中也遇到了同样的问题。我正在使用该algpseudocode包。

原文:在返回末尾附加 0

\usepackage{algorithmic}               
\usepackage{algorithm}   
\usepackage{algpseudocode}  %This introduces extra zero at the end of algorithm 

解决方案:删除包后,返回末尾没有附加 0 algpseudocode

\usepackage{algorithmic}            
\usepackage{algorithm}

答案3

我刚刚按照以下顺序放置包,从而消除了该错误:

\usepackage{algpseudocode}
%\usepackage{algorithmic} not required
\usepackage{algorithm}

相关内容