加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 间接递归的实际应用

发布时间:2020-12-16 09:47:20 所属栏目:百科 来源:网络整理
导读:在一次采访中,他们让我“给出一些间接递归的实际应用”.我只是回答了直接递归和间接递归之间的区别.我用谷歌搜索,但仍然没有得到任何令人满意的答案. 有关此主题的任何信息都是最受欢迎的.. 解决方法 间接递归的一个明显示例是递归下降解析器. 举个简单的例
在一次采访中,他们让我“给出一些间接递归的实际应用”.我只是回答了直接递归和间接递归之间的区别.我用谷歌搜索,但仍然没有得到任何令人满意的答案.

有关此主题的任何信息都是最受欢迎的..

解决方法

间接递归的一个明显示例是递归下降解析器.

举个简单的例子,考虑一个语法:

expression = product (+|-) product

product  = term (*|/) term

term = number | variable | '(' expression ')'

要使用递归下降解析器解析该语法,我们基本上创建一个函数来表示每个元素:

expression(input) { 
    product(input);
    assert(operator(input) == '-' || '+');
    product(input);
}

product(input) {
    term(input);
    assert(operator(input) == '/' || '*');
    term(input);
}

term(input) { 
    if (next(input) == '(')
        expression(input);
    // ...
}

我显然在这里简化了许多,但希望总体思路出现:表达式由 – 或 – 组合的产品组成.产品由/或*组合的术语组成.术语是括号中的数字或变量或表达式.我们调用一个函数来识别每个函数,所以当我们将括号中的表达式识别为术语时,我们使用间接递归 – 表达式() – > product() – > term() – >表达().

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读