二分法猜价格

假设商品价格在0-999之间,输入一个正确的价格.

方法1:从1开始从上逐进,直到与正确的相等

方法2:二分法,每次选取中间值,直至正确的值.

说明:二分法本质上分治法的一种的方法.

'//程序用逐步法猜价格
'//假设价格都是整数,没有小数
Sub GP_Step()
Dim Price&, i&, Guess&, Step&
'   正确价格,变量,猜想值
Dim Min&, Max&
'   最小值,最大值
Min = 1: Max = 999
With Sheet1
Price = .Cells(3, 1)
For i = Min To Max
  Step = Step + 1
   Guess = i
   If Guess = Price Then Exit For
Next i
.Cells(2, 5) = Guess
.Cells(2, 4) = Step
End With
End Sub

'//程序用二分法猜价格
'//假设价格都是整数,没有小数
Sub GP_Binary()
Dim Price&, i&, Guess&, Step&
'   正确价格,变量,猜想值
Dim Min&, Max&, ex#
'   最小值,最大值,精度
ex = 0.1
Min = 1: Max = 999
With Sheet1
Price = .Cells(3, 1)
Guess = Round((Min + Max) / 2, 0)
Do
Step = Step + 1
If Guess > Price Then
   Max = Guess
ElseIf Guess < Price Then
   Min = Guess
End If
   Guess = Round((Min + Max) / 2, 0)
Loop Until Guess = Price
.Cells(5, 5) = Guess
.Cells(5, 4) = Step
End With
End Sub


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值