趣味数学编程的改进和调试──对前13期趣味数学编程小结

IT商界

  趣味数学已过了13期,每期都接到许多热心读者朋友的响应,使我们每一期都可以做得更好,希望这种响应和批判,对大家的编程也能起一种催化剂的作用,大家在看这些源程序的时候,不能忘记自己一应要独立思考。

  为什么要一题多解

  一题多解为我们编程提供了更为广阔的思考空间,也为程序的调试提供了另外一种方法。《车牌号码》和《身份证号码》是一个数字方面的例子,对于这两个题目,我们至少可用两种方式来组合数字,从数字开始还是从数位开始,这两种方式中有一种比另一种更简洁。以两种方法做出的结果的比较,是我们查看所编的程序正确与否的一种方法。伴随着分析方法的不同,另一种一题多解就是本期的《牛顿的楼梯》,由于分析不同,所得到的规律不同,对应的程序也有所不同。

  条件中画蛇添足的现象

  条件是编程的依据,如果分析不出条件,就可能要出错。但是如果条件存在,也不一定是件好事,条件的用与不用,还要看一下它究竟在题中起不起作用,《赌博游戏》中的美元硬币的情况就是一把双刃剑,如果我们将题目做一下修改,将阿西的硬币枚数从7调到5,其结果还是不变的。《乘车兜风算年龄》中的关于最大年龄的讨论,细心的读者不难发现,第二个条件是不起作用的,从结果的分析中我们不难看出,7、14、25这几个数的和与120还差很多。所以在这个题目中,第二个条件变得无关紧要。

  用好N-S图来调试程序

  N-S图是写程序的好工具,更是调试程序的好帮手。笔者在《公车问题》的调试中,里面的数组r(i)写错了,找了半天没找到,后来在N-S图的对比中才发现这个问题,并且很多时候,问题从N-S图中更容易发现和修改存在的问题。

  N-S图很好地描述了程序间的结构关系,易于我们对错误码进行定位,利用它来找错,往往能起到事半功倍的效果。