我正在尝试编写一个递归算法来计算类型的表达式:operator
variable
和返回true/false
的函数。
[A] = [B] - [c]
functionA(1,2) = functionB(3,4,5)
functionA(functionC(a,b)) = functionB(3,4,5)
问题在于我不知道如何启动以及使用什么方法。我可以使用堆栈或任何东西 我试图在 Javascript 中执行此操作。
欢迎任何逻辑/想法。
答案 0 :(得分:0)
也许你正在寻找这个,一组函数和基于堆栈的RPN风格的命令迭代。
在输出中,您可以看到实际的命令和堆栈。
var $ = {
'===': function (b) { return function (a) { return a === b; }; },
'+': function (b) { return function (a) { return a + b; }; },
'-': function (b) { return function (a) { return a - b; }; },
'1/x': function (a) { return 1 / a; },
},
commands = [3, 2, '+', 9, 4, '-', '==='],
result = commands.reduce(function (stack, command) {
var temp;
if ($[command]) {
temp = $[command];
while (typeof temp === 'function') {
temp = temp(stack.pop());
}
stack.push(temp);
} else {
stack.push(command);
}
document.write('<pre>' + command + ': ' + JSON.stringify(stack, 0, 4) + '</pre>');
return stack;
}, [])[0];
document.write(result);
&#13;