编写多个 if/else 语句的更紧凑的方法是什么

编写多个 if/else 语句的更紧凑的方法是什么
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{algorithm}% http://ctan.org/pkg/algorithm
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\usepackage[1,2,3,4]{pagesel}
\usepackage{amsmath}

\algnewcommand\algorithmicforeach{\textbf{for each}}
\algdef{S}[FOR]{ForEach}[1]{\algorithmicforeach\ #1\ \algorithmicdo}



\begin{document}

\algdef{SE}[SUBALG]{Indent}{EndIndent}{}{\algorithmicend\ }%
\algtext*{Indent}
\algtext*{EndIndent}

\noindent
\newpage

\begin{algorithm}

\begin{algorithmic}[1]
\Procedure{iterate}{$CART$}
  
  \ForEach{$t \in T$}
   
  \If{$ something2 $}
  \Indent
  \If{$something3$}
  \State $b_{d} = "L"$
  \ElsIf{$something4$}
  \State $b_{d} = "R"$
  \ElsIf{$something4$}
  \State $b_{d} = "-"$
   \EndIf
  \EndIndent
 \EndIf
 
\EndProcedure

由于这种符号会使伪代码变得非常长,因此编写 if/ifelse 语句的更紧凑的方法是什么?

答案1

首先回答你的问题,我会按照下面的图片来表示,它使用了一个函数数组。

在此处输入图片描述

伪代码代表了使用计算机语言编写程序的非正式高级描述。伪代码省略了变量声明、内存分配和计算机语言特定语法等细节。然而,级别太高,我们可能会错过重要的细节。伪代码的目标是提供足够的线索,让读者编写一个可行的计算机程序,无论最终使用哪种编程语言来实现它。

图片中的伪代码风格遵循一种特定的风格,我第一次看到从计算角度看素数作者:Crandall。这可以说是英语和 C 类语言的融合(或者 Algol68,如果你需要赞扬的话)。这种混合有望使算法更具可读性,程序员可以轻松地将其更改为她喜欢的语言。Knuth 也使用了类似的风格。如果你对这种风格感兴趣,请发布另一个问题,我会发布一些代码。

酸性测试

为了实现你的算法,比如在 LaTeX 中我会这样做

\documentclass{minimal}
\begin{document}
\newcounter{counter} 
\def\States{\elt A\elt B\elt C \elt D\elt E}%<-array
\def\GetState#1{
  \gdef\elt##1{
    \stepcounter{counter}
    \ifnum#1=\thecounter State: ->##1$_{\thecounter}$ \fi
   }
  \States  %<return
}
\GetState{2}
\end{document}

相关内容