gpt4 book ai didi

algorithm - 如何在将中缀表达式转换为反向波兰表示法时计算方法的参数数量

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:36:21 27 4
gpt4 key购买 nike

我有如下表达式。最小值(最大值(平均值(平均值(4,2),2,3),总和(1,2)))我已经实现了调车场算法来将中缀转换为逆波兰表示法。我添加了带有两个参数的函数 MAX 、 MIN 和 AVG 。但是假设如果我想实现变量参数,那么我必须知道每个函数在中缀表达式中有多少个参数。有人能告诉我如何修改调车场算法以包含否。将 infix 转换为 rpn 时每个函数的参数?

最佳答案

所以如果你有 log max(1, 2, 3, 4, 5) 你会做:

log => push log to stack
max => push max to stack
( => push ( to stack
1 => push 1 to stack
, => pop top of stack to output => pop 1 to output
2 => push 2 to stack
, => pop 2 to output
...
=> end result: 1 2 3 4 5 max log

问题是您不知道有多少参数属于max 有多少参数属于log(对数可能会也可能不会以底数作为参数以及)。

使用 wikipedia description , 应该可以计算每个函数参数分隔符(逗号):如果你有 k 函数分隔符,那么你有 k + 1 参数,所以你可以输出一个上面的 1 2 3 4 5 max_5 log。在嵌套函数的情况下要注意不同的计数:

max(1, 2, log(3, 4), 5) => 1 2 3 4 log_2 5 max_4
---------
max has 4 arguments after evaluating log_2(3, 4)

max 标记有一个计数,log 函数有另一个计数。您需要跟踪堆栈中最顶层函数标记的计数,还需要跟踪堆栈中所有其他函数标记的计数,因为您最终可能会恢复这些计数。

关于algorithm - 如何在将中缀表达式转换为反向波兰表示法时计算方法的参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29348246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com