多分支结构和其矩阵形式
矩阵形式的多分支结构
在 Plotter 里,程序语句可以放入一个数组或者矩阵,if 函数接受一个至少 n 行 2 列的矩阵或者数组,从第一行开始判断,直到某一行的第一个元素是成立的时候,返回该行第二个元素。类似于多 if 的分支结构。
使用矩阵形式的多分支结构的优势是:分支结构中的条件和结果也可以参与矩阵运算
下面是一个使用递归函数和多分支结构的例子:斐波那契数列
0, 1, 1, 2, 3, 5, 8, ...
a(n)=n<0?0:if([[n<2,1],[1,a(n-1)+a(n-2)]])
可以使用矩阵换行符 ; 简化表达式
a(n)=n<0?0:if([n<2,1;1,a(n-1)+a(n-2)])
输出 a(3) 的值。将代码格式化,并用 # 注释
a(n)=                               # 定义函数 a(n)
    n<0?0:                          # 如果 n<0 退出递归 返回 0
        if([                        # if 函数
            n<2,1;                  # 如果 n<2 返回 1
            true,a(n-1)+a(n-2)      # 否则 返回 a(n-1)+a(n-2)
        ]);                         # 以分号结尾,不输出结果
a(3)                                # 不以分号结尾,输出结果
输出结果:3
使用三目运算 ?: 的多分支结构
在 Plotter 里,使用三目运算符 ?: 可以实现二分支结构,组合多个 ?: 可以实现多分支结构
一个使用递归函数和多分支结构的例子:斐波那契数列
a(n)=n<0?0:n<2?1:a(n-1)+a(n-2)
代码格式化
a(n)=               # 定义函数 a(n)
    n<0?0:          # 如果 n<0 退出递归 返回 0
    n<2?1:          # 如果 n<2 返回 1
    a(n-1)+a(n-2)   # 否则 返回 a(n-1)+a(n-2)
斐波那契数列的推广
..., 8, -5, 3, -2, 1, -1, 0, 1, 1, 2, 3, 5, 8, ...
a(n)=n<0?a(n+1)+a(n+2):n>1?a(n-1)+a(n-2):n
代码格式化
a(n)=
    n<0?
        a(n+1)+a(n+2):
    n>1?
        a(n-1)+a(n-2):
    n
LaTeX 公式
