穷举、递归、迭代
1,需示分析
本部分演示了穷举、递归、迭代。穷举的基本思想是:首先根据题目的部分条件预定答案的范围,然后对此范围内所有可能的情况进行逐一检验,直到全部情况均通过验证为止。若某种情况符合题目的全部条件,则该情况为本题的一个解,若全部情况的验证结果均不符合题目的全部条件,则说明该题无解。迭代指把一个复杂问题的求解方程转化成相对简单的迭代算式,然后重复运行这个算式,直到得到最终解。递归:如果一个过程直接或间接有限次的调用了它本身,则称这个过程是递归的。穷举以百鸡问题为例,递归以求阶乘为例,迭代以求一元五次方程为例。
百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,问翁、母、雏各几何?
2,设计
百鸡问题的题目由静态控件、编辑框组成,使得用户可以动态改变鸡的价格、总钱数、总鸡数,当用户点击“穷举”按钮时,分析过程及结果显示在列表框中。
递归:用户输入一个数,按钮的标题变成n!(其中n是输入的数),分析过程与结果也显示在列表框中。
迭代:用户可以通过编辑框改变系数与控制精度,过程与结果显示在列表框中。为了避免无解,迭代一定次数后作无解处理。
3,测试:
百鸡问题,先测试原题再更改设置,注意:
1),每个控件都用到。
2),买不起一只鸡。
3),无解。
递归范围有限,可穷举,注意溢出。
求一元五次方程,注意:
1),无解,如:x*x+1=-1;
2),6个系数中0的个数从0到6(一元五次方程到常数方程)。
3),测试用例不要过于复杂。
有关用户:
1,编辑控件可更改设置。
2,注意溢出与无解。
[url=http://www.csdn.net/develop/read_article.asp?id=16885][/url]