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() – >表达(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |