Python-表达式

作业回顾

'''
1、使用递归实现斐波那契数列
0 1 1 2 3 5 8 13 21 ...

第一个条件
1、必须要有出口
2、必须自己调用自己
'''


def fib_func(n):
    # 初始值设置 如果n是0或者1 则直接返回本身
    if n in (0, 1):
        # 只要执行return 本次函数调用就终止
        return n

    return fib_func(n-2) + fib_func(n-1)


# 传递一个数 然后就是打印前几位
for i in range(10):
    print(fib_func(+i), end=' ')

'''
分析:
fib_func(0) = 0
fib_func(1) = 1
fib_func(2) = fib_func(0) + fib_func(1) = 0 + 1 = 1
fib_func(3) = fib_func(1) + fib_func(2) = 1 + 1 = 2
fib_func(4) = fib_func(2) + fib_func(3) = 1 + 2 = 3
fib_func(5) = fib_func(3) + fib_func(4) = 2 + 3 = 5
...
fib_func(n) = fib_func(n-2) + fib_func(n-1)
3   2
4   3
5   5
6   8
'''

lambda表达式

'''
1、使用递归实现斐波那契数列
0 1 1 2 3 5 8 13 21 ...

第一个条件
1、必须要有出口
2、必须自己调用自己
'''


def fib_func(n):
    # 初始值设置 如果n是0或者1 则直接返回本身
    if n in (0, 1):
        # 只要执行return 本次函数调用就终止
        return n

    return fib_func(n-2) + fib_func(n-1)


# 传递一个数 然后就是打印前几位
for i in range(10):
    print(fib_func(+i), end=' ')

'''
分析:
fib_func(0) = 0
fib_func(1) = 1
fib_func(2) = fib_func(0) + fib_func(1) = 0 + 1 = 1
fib_func(3) = fib_func(1) + fib_func(2) = 1 + 1 = 2
fib_func(4) = fib_func(2) + fib_func(3) = 1 + 2 = 3
fib_func(5) = fib_func(3) + fib_func(4) = 2 + 3 = 5
...
fib_func(n) = fib_func(n-2) + fib_func(n-1)
3   2
4   3
5   5
6   8
'''

lambda表达式传参

# 普通方法实现
def func1(a, b):
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现数学表达式的分析树,可以采用以下步骤: 1. 将中缀表达式转换为后缀表达式,例如将 "3 + 4 * 2 / ( 1 - 5 ) ^ 2 ^ 3" 转换为 "3 4 2 * 1 5 - 2 3 ^ ^ / +" 2. 用栈来实现后缀表达式的计算。从左到右遍历后缀表达式,遇到数字则入栈,遇到运算符则从栈中弹出相应数量的数字进行计算,并将计算结果入栈。最终栈中只剩下一个数字,即为表达式的计算结果。 3. 用二叉树来实现分析树。从右往左遍历后缀表达式,遇到数字则将其作为叶节点,遇到运算符则将其作为根节点,将弹出的两个数字作为左右子树。最终根节点即为表达式的根节点。 下面是一个简单的 Python 实现: ```python class TreeNode: def __init__(self, val): self.val = val self.left = None self.right = None def build_expression_tree(postfix): stack = [] for token in postfix: if token.isdigit(): node = TreeNode(int(token)) stack.append(node) else: right = stack.pop() left = stack.pop() node = TreeNode(token) node.left = left node.right = right stack.append(node) return stack.pop() def evaluate_expression_tree(root): if root.val.isdigit(): return int(root.val) else: left_val = evaluate_expression_tree(root.left) right_val = evaluate_expression_tree(root.right) if root.val == "+": return left_val + right_val elif root.val == "-": return left_val - right_val elif root.val == "*": return left_val * right_val elif root.val == "/": return left_val / right_val elif root.val == "^": return left_val ** right_val postfix = "3 4 2 * 1 5 - 2 3 ^ ^ / +" root = build_expression_tree(postfix) result = evaluate_expression_tree(root) print(result) ``` 输出结果为:3.0001220703125

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值