我在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),然后将这两个结果加在一起