算24点(2)算法的分析

在上一个动态写出算24点的函数后,这里给出整个程序并且对程序内容进行分析:

代码解析:

  1. 定义常量EPS:用于浮点数的比较,以避免直接比较可能引起的精度问题。

  2. 定义一个iszero函数:

    • 判断一个浮点数是否接近于0,如果是,则返回true
  3. suan24函数:

    • 递归函数,尝试通过组合四个数字和四种运算得到24。
    • 如果只剩下一个数字,且该数字接近24,则返回true
    • 通过双层循环遍历所有可能的数字对,尝试加、减、乘、除四种运算。
    • 对每种运算结果,递归调用suan24函数,检查是否能得到24。
    • 如果任何一种运算能得到24,则返回true
  4. main函数:

    • 无限循环,直到输入的四个数字之和为0时退出。
    • 读取四个数字,并计算它们的和。
    • 调用suan24函数,检查是否有可能通过这四个数字得到24。
    • 根据suan24的返回值,输出“YES”或“NO”。

下面展示几组运行实例:

代码的优缺点的分析:

  • 优点

    • 使用递归方法尝试所有可能的运算组合,是一种常见的解决问题的方法。
    • 考虑了浮点数比较的精度问题。
  • 缺点

    • 没有处理除以0的情况,这可能会导致运行时错误。
    • 没有考虑运算的顺序和括号的使用,这在24点游戏中是重要的。
    • 输入的四个数字之和为0时退出循环可能不是一个好的退出条件,因为即使和不为0,也可能没有解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值