APP下载

二进制在有限的递归教学中的一点巧用

2019-08-27钱文华

速读·中旬 2019年8期
关键词:二进制

◆摘 要:本文主要考虑二级制在有限的递归中的一点巧用,递归法一般是针对十进制自然数,本文旨在给学生延拓思维。

◆关键词:二进制;递归;博弈策略

一、引言

我们将通过介绍一场人机博弈的方式来引入二进制的一个应用。关于二进制的介绍可以在很多计算机入门课程中找到,例如[1-4]。以下我们先简单介绍博弈规则。

假设计算机给出一串长度为n的0,1字符,博弈方式为玩家删除最右端字符。当玩家删除的字符为0时,其它字符右移一位,且电脑将在字符串的左边随机生成一个字符0或者1;当玩家删除的字符为1时,其它字符右移一位,且玩家可自行选择在左端添加0或者1。若在某一时刻所有的字符全为0,则玩家获胜。

二、博弈策略及其分析

显然,若在某一时刻所有的字符全为1,则在接下来的n次删除字符后玩家均在左端添加0即可。

我们接下来将把每n次操作看作一组,则每一组操作后,实际上我们可以看作是直接对原有每个位置的字符进行一次替换。当原有字符为0时,由电脑随机决定替换为0或者1;当原有策略为1时,玩家可自行决定替换为0或者1。

我们可以将长度为n的0,1字符看作是二进制表达下的一个数,该数的范围在[0,2n-1]之间。每一组操作中,字符串的替换顺序时从右向左。

我们的博弈策略如下:每一组操作中,我们观察电脑的替换.此时有以下两种情形:

情形一:若电脑始终将0替换为0,则我们也将1替换为0,这样一组操作后自然得到所有字符全为0。

情形二:若在某个位置,电脑将0替换为1,则在该位置之后的操作中我们始终将1替换为1。

注意到,如果在某一组操作中出现情形一,则玩家已经获胜结束博弈过程。因此我们主要分析情形二。而实际上情形二出现时,我们一组操作后二进制所表达的数字是严格递增的。注意到长度为n的0,1字符看作是二进制表达下数的范围在[0,2n-1]之间,因此若持续出现情形二,则一定在经过若干次操作后,我们可以得到全为1,此时下一组操作中玩家全替换为0即可获勝。

三、小结

该策略中,我们比较核心的思想是通过递归的方法来得到严格递增的字符串,然而字符串所表达的数有上界,故而必然可以达到。

参考文献

[1]谭浩强.C语言程序设计(第二版)[M].清华大学出版社,2009.

[2]胡泉,谢芳.C语言程序设计[M].华中科技大学出版社,2009.

作者简介

钱文华,重庆师范大学数学科学学院,重庆市沙坪坝区大学城校区。

猜你喜欢

二进制
神奇的二进制
有用的二进制
一加一,有可能不等于二?
用Scratch把十进制转为二进制
有趣的进度
“反人类”的二进制
0和1的世界有多神奇
小论二、八、十、十六四种进制之间的转换
记事本里的信息技术课
你来想数我来猜