使用递归从最简单的情况构建解决方案。
假设
D是纸牌阵列。设
A您的牌
B总数为对手的牌总数。设置
S =A-B为游戏的价值。如果你赢了
S>0,如果输
S<0和领带如果
S==0。
最简单的方法是一次执行两个动作,然后是对手确定的动作。有两种基本情况需要考虑:
如果
length(D) == 0
,请返回S
。游戏结束了。如果
length(D) == 1
,请返回S + D[0]
。您选择剩余的卡,游戏结束。
对于递归情况,当时
length(D) > 1,评估两种可能性
- 让
L
是比赛的结果,如果你选择了左侧的卡,随后被对手做他的确定性的举动,即
L = D[0] - max(D[1],D[N-1]) + cardGamevalue(newD)
- 让
R
是比赛的结果,如果你选择正确的卡,随后被对手做他的确定性的举动,即
R = D[N-1] - max(D[0],D[N-2]) + cardGamevalue(newD)
选择与较大数字相对应的播放,即“
D[0]如果”
L>=R,否则“”
D[N-1]。在这里
N = length(D)。



