小编Yip*_*yay的帖子

C解析器递归

我在C和Lisp算术计算器中制作一个简单的程序,只涉及整数和"+ - * /"运算符,我这样做是为了学习目的,这不是我的作业或类似的东西.

所以我已经创建了一个函数,它将正确地解析这样(+ 2 3)输出5的东西,所以我知道如何处理非嵌套语句,但是当我有这样的东西时,我觉得(+ (* 2 3) (- 4 2))我可以使用递归来解决这个问题,但我不知道我不知道该怎么做.

我的逻辑是(伪代码):`

  function parse_line(int n)
    get_input(string);
    if string[n] == '('
     if string[n+1] == operator
      if string[n+3] == number
       result = parseAllNumbers(); //between ( )
       return result; 
    if string[n+3] == '('
     parse_line(n+2);
Run Code Online (Sandbox Code Playgroud)

`

所以我的逻辑在这里是正确的,如果我有,(+ (* 2 3) (- 4 2))我只会计算.(* 2 3),我将如何计算(- 4 2),然后将这两个结果加在一起

c lisp recursion

4
推荐指数
1
解决办法
241
查看次数

标签 统计

c ×1

lisp ×1

recursion ×1