跳到主要内容

左递归

进行四则运算时,根据运算结合性,我们通常是从左往右依次计算,如下所示:

  • 语法规则: add: add | add + number

  • 代码实现:

    function additive(){
    additive();
    number();
    }

但是,根据add: add | add + multiple从左往右计算会在代码实现的过程中没有结束条件,造成无限递归的情况,这种情况称为左递归,那么我们通过如下方式解决:

  • 语法规则: add: number | number + add

  • 代码实现:

    function additive(){
    number();
    additive();
    }

但是,add: multiple | multiple + add这种逻辑失去了结合性