编程小博士(15)
软件世界
一题多解的探讨
问:有时一个问题的解决办法也许不只一种,那怎样进行一题多解呢?这样做有什么好处吗?
小博士:对程序输入、处理和输出三部分功能中输出部分的定位不同,就可能导致处理过程不一样。通过多种方法的探讨,不仅能开拓我们编程的思路,对于我们在处理复杂问题时更可以不再局限于一种思路。下面来看看这个实例。
示例:有两个数a和b,按从大到小排序
有两个数a和b,然后对它们进行排序。结果很明显只有两种可能,a、b或b、a,我们怎样对待这个问题编程呢?
第一种解法:
Private Sub Command
1_Click() '方法1
' 输入
a = Val(Txta.Text) '通过文本框实现a、b输入
b = Val(Txtb.Text)
'比较兼输出
If a > b Then
TxtList.Text = Str(a) + "," + Str(b)
Else
TxtList.Text = Str(b) + "," + Str(a)
End If
End Sub
说明:这种方法便是强制输出结果。输入a、b中的数值可能有两种情况,而输出的只有一种a>b,这种强制输出,也就决定了在处理过程中我们需按两种情况来进行处理,符合a>b的,不用处理就可输出,而如果不符合a>b,则要将a和b两数的值交换。
第二种解法:
Private Sub Command
2_Click() '方法2
' 输入
a = Val(Txta.Text)
b = Val(Txtb.Text)
'比较
If a > b Then
Else
c = a
a = b
b = c
End If
'输出
TxtList.Text = Str(a) + "," + Str(b)
End Sub
(以上程序在Win2000 VB6.0下调试通过)
说明:交换两数值的程序在前面我们介绍过,只要再引入第3个变量c,通过三步即可实现。
思考
问题通过两种办法成功解决。从表面上看,前一种比后一种简洁一些。但如果按照这种思路,在解三个数及更多个数排序的复杂问题时,哪种方法更简单呢?