我正在尝试排版一个\If
没有匹配\EndIf
using 的块的伪代码algpseudocode
。这是我的 MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
% Insert the algorithm
\begin{algorithm}
\caption{Compute some function by recursive algorithm}
\begin{algorithmic}[1]
\Function{$some$}{m,n}
\If{$n=1$ \textit{or} $m=1$}
\State \Return 1
\Else
\State \Return $some(n,m-1)+some(n-1,m)+some(n-1,m-1)$
\EndFunction
\end{algorithmic}
\end{algorithm}
\end{document}
但是我得到了错误:missing number, treated as zero
。我该怎么做才能使\If
代码不匹配\EndIf
?
答案1
该错误是因为您缺少和\EndIf
。
该algpseudocode
包依赖于\If...\EndIf
结构(像任何像样的语言一样)来跟踪代码的缩进。
如果不想显示 s \End
,可以使用noend
选项 for algpseudocode
。不过,您必须使用\EndIf
foralgpseudocode
的内部簿记。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\begin{document}
% Insert the algorithm
\begin{algorithm}
\caption{Compute some function by recursive algorithm}
\begin{algorithmic}[1]
\Function{$some$}{m,n}
\If{$n=1$ \textit{or} $m=1$}
\State \Return 1
\Else
\State \Return $some(n,m-1)+some(n-1,m)+some(n-1,m-1)$
\EndIf % <- Here
\EndFunction
\end{algorithmic}
\end{algorithm}
\end{document}