计算序列的递归项

计算序列的递归项

我想计算一个序列的递归项。以下代码使用斐波那契数列(当然,也可以是其他序列)完成此任务。

\documentclass[varwidth,border=5]{standalone}
\usepackage{tikz}
\usepackage{fp}
\usetikzlibrary{fixedpointarithmetic}
\usetikzlibrary{math}

\begin{document}
  \tikzset{fixed point arithmetic}
  \tikzmath{
    function printfib(\i,\f){print {$f_{\i} = \f$\newline};};
    function fibonacci(\n) {
      int \a, \b, \res;
      \a = 0; \b = 1;
      if \n == 0 then { \res = \a; };
      if \n == 1 then { \res = \b; };
      if \n > 1 then {
        for \i in {2,...,\n}{
          \res = \a + \b;
          \a = \b;
          \b = \res;
        };
      };
      return \res;
    };
    int \f, \i;
    for \i in {0,1,...,10}{
      printfib(\i,fibonacci(\i));
    };
  }


\end{document}

但是,我想将这些结果打印到包含两列的表中。第一列是 n 个值,第二列是序列的第 n 项。有人能帮我插入说明来执行此操作吗?换句话说,我提供 n 的值,我想获得一个包含序列的 n 个值的表格。非常感谢!

答案1

您可以使用tikzmath来定义宏。 此类宏(如下\fib例所示)可用于填充表格。 这是一个非常基本的表格,您可以使其更加精美,并可用于pgfplotstable填充它。

\documentclass[varwidth,border=5]{standalone}
\usepackage{etoolbox}
\usepackage{tikz}
\usepackage{fp}
\usetikzlibrary{fixedpointarithmetic}
\usetikzlibrary{math}

\begin{document}
  \tikzset{fixed point arithmetic}
  \tikzmath{
    function printfib(\i,\f){print {$f_{\i} = \f$\newline};};
    function fibonacci(\n) {
      int \a, \b, \res;
      \a = 0; \b = 1;
      if \n == 0 then { \res = \a; };
      if \n == 1 then { \res = \b; };
      if \n > 1 then {
        for \i in {2,...,\n}{
          \res = \a + \b;
          \a = \b;
          \b = \res;
        };
      };
      return \res;
    };
    int \f, \i;
    for \i in {0,1,...,10}{
      \fib{\i}=fibonacci(\i);
    };
  }

\def\tmp{$n$ & $f(n)$\\ $0$ & $0$\\}%
\edef\iloop{0}%
\loop
\edef\iloop{\the\numexpr\iloop+1}%
\xappto\tmp{$\iloop$ & $\fib{\iloop}$}%
\gappto\tmp{\\}%
\ifnum\iloop<10\repeat

\begin{tabular}{cc}
\tmp
\end{tabular}

\end{document}

相关内容