IMfine. 2022-02-20 22:19 采纳率: 72.4%
浏览 250
已结题

这个代码想了好久还是没想通

请问一下这个递归和逆波兰式的结合的代码到底是怎么一个字符一个字符运行的啊,想了好久还是没想通

img

img

  • 写回答

8条回答 默认 最新

  • 「已注销」 2022-02-20 22:39
    关注
    获得0.25元问题酬金

    对前缀表达式求值,要从右至左扫描表达式,首先从右边第一个字符开始判断,若当前字符是数字则一直到数字串的末尾再记录下来,若为运算符,则将右边离得最近的两个“数字串”作相应运算,然后以此作为一个新的“数字串”并记录下来;扫描到表达式最左端时扫描结束,最后运算的值即为表达式的值。

    所以你的程序是,输入x,递归下去(相当于入栈),然后又输入了+,再次递归下去,接着输入了11,把它转成数字返回,输入12同样转成数字返回,此时由+引起的两次递归结束,返回11+12结果为23给x引起的第一个递归,但是又输入了+,又会两次递归,把后面输入24和35转为数字,返回24+35为59结果给x引起的第二个递归。此时x的两次递归结束,返回23*59的结果为1357给main函数。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 2月28日
  • 创建了问题 2月20日