$2=#C(*.)。当调用递归函数的时候,我们可以看到其实现了所有数的
相加,其中的 从原来的最大值 ,经过递归达到 ,最后生成 个数之和。
接着就是递归函数的调用,假如 68其中 57 时,如果 68与
相减为零,则可以算出 点。如果,其返回直为否,则说明不能算出
点。则程序往下继续执行,接着是判断其他运算。同样的道理可以得出其返回
值的正假,由此判断出 点的生成算法。注意假如我们只是简单的用计算结
果和 相减为 7 则大错特错了,因为其中牵涉了到小数的问题。假如在运算
中遇到了小数的式子不算,则此种判别是正确的,但 点游戏是允许中间过
程存在有限小数,甚至是无限循环小数。因此要判断结果是否为 只能采用
模糊的判别,即相减为 .2*/ 之外,则说明其结果为 。
我们可以举个例子如 333.,其中的运算就牵涉到了小数,其算法为(3*
.13)03。只要我们的判别是如以上程序的,则此算式将轻易的解出。还有一
点就是,简化式子的算法。形如 和 是一样的,可以省略其中的一种。
点游戏的算法有多种多样,以上我只是简单对 种不同思想的算法做了简
短的介绍,当然还有些算法也是大同小异,我们也不逐一列出了。介绍了
点算法后,接下来我们来探讨一下,一个有着纸牌图形界面的 点游戏将怎
样完成。
.D 点算法的多样性(即多解的算法和优化算法)的讨论
我们拿递归算法来分析其算法的多样性。我们知道递归算法是通过调用一
个递归函数,将 值依次减 . 到最小值为止。并且在此递归的过程中实现了,
表达式的 则运算,然而在以上的递归函数中已经考虑到了各种算法的可能性。
其主要思想就是对 个数字的运算顺序和运算符号通过递归逐一的算出各种表
达式。先重加法算起,依次算到除法(被除数不为零)为止。显然,其中已经
包括了 点的所有算法,假如要输出每种可能性进性判别其优化性,那就需
要用到编译原理的知识。通过逆波兰式的判定,求出其最优化的算法。我们拿
为例子,我们知道在有括号的情况下,()()以及
() 这 D 种情况中,很明显前一种是最简洁。那我们在程序中要如
何设置其最简单的算法呢。这就需要对两种算法进行逆波兰式的判别,我们将
前 者 写 成 逆 波 兰 式 , 则 为 第 种 写 成 逆 波 兰 式 为 也 为