【Python数据结构与算法】递归----波兰表达式

举报
是Dream呀 发表于 2024/08/28 22:16:47 2024/08/28
【摘要】 【Python数据结构与算法】递归----波兰表达式

在这里插入图片描述

题目:波兰表达式

描述
波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的波兰表示法为+ 2 3。波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的波兰表示法为* + 2 3 4。本题求解波兰表达式的值,其中运算符包括+ - * /四个。

输入
输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数。
输出
输出为一行,表达式的值。
可直接用printf("%f\n", v)输出表达式的值v。
样例输入

* + 11.0 12.0 + 24.0 35.0

样例输出

1357.000000

AC代码

可使用atof(str)把字符串转换为一个double类型的浮点数。atof定义在math.h中。
此题可使用函数递归调用的方法求解:

def polishExp(exp):
	N = 0
	def polish():
		nonlocal  N
		if exp[N] == '+':
			N = N + 1
			return polish() + polish()
		elif exp[N] == '-':
			N = N + 1
			return polish() - polish()
		elif exp[N] == '*':
			N = N + 1
			return polish() * polish()
		elif exp[N] == '/':
			N = N + 1
			return polish() / polish()
		else:
			result = float(exp[N])
			N = N + 1
			return result
	return polish()
exp = input().split()
print('%.6f' % polishExp(exp))

在这里插入图片描述

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。