`

PHP数3退1面向对象的写法

阅读更多
<?php
        //用面向对象的方法写 将猴子选大王实现 同样数3退1
        class Monkey {
                /**
                 * 定义猴子类 
                 * 属性  编号 $id    
                 *       左手 $left  表示的当前猴子左边的猴子
                 *       右手 $right 表示的当前猴子右边的猴子
                */
                        public $id;
                        public $left;
                        public $right;
        }
        class Circle{
                /**
                 * 定义圈类 
                 * 属性  猴子的总数 $ct    
                 *       开始的猴子 $first 
                 *       结束的猴子 $last  
                 */
                public $ct = 0;
                public $first;
                public $last;
                //构造方法创建圈
                //参数是猴子的个数
                function __construct($c){
                        for($i=0;$i<$c;$i++){
                                $this->add();
                        }
                }

                //猴子的添加方法
                function add(){
                        $m = new Monkey();
                        $m->id = $this->ct;
                        if($this->ct==0){
                                $this->first = $m;
                                $this->last = $m;
                                $m->left = $m;
                                $m->right = $m;
                        }else{
                                $this->last->right = $m;
                                $m->left = $this->last;
                                $m->right = $this->first;
                                $this->first->left = $m;
                                $this->last = $m;
                        }
                        $this->ct++;
                }

                //猴子的删除方法
                function del($m){
                        if($this->ct <=0){
                                return;
                        }else if($this->ct == 1){
                        
                                $this->first = $this->last = null;
                        }else{
                                $m->left->right = $m->right;
                                $m->right->left = $m->left;

                                if($m == $this->first){
                                        $this->first = $m->right;
                                }else if($m == $this->last){
                                        $this->last = $m->left;
                                }
                        }
                        $this->ct--;
                }
        
        }
        /*
                这里的代码就是实现让500只猴子围城一圈然后
                数三个退一个就这样直到还剩一个把那猴子的编号打印出来
        */
        $circle = new Circle(500);
        $number = 0;
        $mk = $circle->first;
        while($circle->ct > 1){
                $number++;
                if($number == 3){
                        $number = 0;
                        $circle->del($mk);
                }
                $mk = $mk->right;
        }
        echo $circle->first->id;
?> 


分享到:
评论

相关推荐

    面向对象设计 5 —— PHP5面向对象进阶(重写(override))

    面向对象设计是编程领域中的一个重要概念,特别是在PHP5及更高版本中得到了显著强化。本教程主要探讨PHP5的面向对象进阶特性,特别是类的重写(Override)机制。通过以下列出的源码文件,我们可以深入理解这一概念。...

    PHP ORM(面向对象PDO数据库框架&amp;API框架)

    自主封装的PHP ORM框架,面向对象的PDO数据库操作,API框架,支持Get/Post/Put/Delete多种请求方式。 代码示例: &lt;?php use Models\User; require '../application.php'; require '../loader-api.php'; //适合...

    经典总结php效率高写法!

    面向对象编程的内存管理 - **避免过度继承和对象实例化**:过度的对象创建和层次复杂的继承链会消耗大量内存和CPU资源。 #### 15. 内存缓存技术 - **使用 Memcached**:Memcached 是一种高性能、分布式内存对象...

    PHP5。0自学资料

    1. 面向对象编程的增强:在PHP5中,类和对象的概念得到了强化。类定义支持访问控制(public, private, protected),构造函数和析构函数的引入,以及抽象类和接口的实现,使得PHP更符合面向对象的设计原则。 2. ...

    php官方中文手册-2018最新

    php手册中文版,这里面既有面向过程的写法,也有面向对象的写法,所有函数列举了一个甚至多个例子来教你如何使用。 居家必备!最好的语言的证据之一

    PHP 5手册 TXT版本

    6. **对象(object)**:面向对象编程的基本单元。 7. **资源(resource)**:表示外部资源的引用,如数据库连接。 8. **NULL**:表示变量没有值。 此外,PHP还支持混合类型(mixed),可以容纳任何类型的值,以及...

    PHP模板引擎PHPnew v6.5 Professional.rar

    面向对象结构编写,开源代码,注释清析; 独家支持原生态, smarty 及discuz 三种模式的模板引擎. 配置更简单,为了方便ZEND工具自动提示,特别命令规范. 特别支持静态替换功能. {html xxxx} 增加生成静态化技术. ...

    新浪PHP工程师面试题和答案解析.doc

    以上总结了新浪PHP工程师面试题中涵盖的一些重要知识点,包括PHP的基础语法、面向对象编程、数据库技术、网络协议等方面。通过这些题目的解析,可以帮助读者更好地理解PHP编程的核心概念和技术细节,为实际工作中的...

    PHP+jQuery大事记.7z

    2004年,PHP 5发布,引入了面向对象编程的支持,提高了性能和稳定性。最新的PHP 7.x系列进一步优化了性能,带来了更强大的类型系统和错误处理机制。 二、jQuery的崛起 jQuery由John Resig于2006年发布,它以其简洁...

    基于PHP的MVC开发框架zentao框架源码.zip

    4. **数据库访问层**:提供ORM(对象关系映射),使得开发者可以使用面向对象的方式来操作数据库,提高代码可读性和可维护性。 5. **API接口**:zentao提供了丰富的API接口,方便与其他系统集成,如RESTful API,...

    邓州英文PHP留言本 1.0.zip

    邓州英文PHP留言本采用面向对象,全站操作全部是用CLASS写法,把根目录的SQL文件导入到数据库就可。采用html template技术, 模板修改起来就跟php的模板一样简单。数据库连接文件:inc/sql.class.php 后台功能: 1....

    PHP+Mysql开发入门

    - **面向对象支持**:从PHP 4开始支持面向对象编程,并在后续版本不断完善。 - **低成本**:LAMP(Linux, Apache, MySQL, PHP)或LNMP(Linux, Nginx, MySQL, PHP)组合是常见的低成本Web开发方案。 - **开源**:...

    基于PHP的风吟PHP版 CSS压缩工具.zip

    对于标签“PHP”,这意味着这个工具是用PHP语言编写的,所以开发者需要熟悉PHP的基本语法、函数库以及面向对象编程的概念。PHP是一种广泛使用的服务器端脚本语言,尤其适合Web开发。通过学习PHP,开发者可以自定义...

    php执行sql语句的写法

    现在推荐使用`mysqli_*`或PDO扩展来与MySQL交互,它们提供了更好的性能、安全性和面向对象的接口。例如,使用`mysqli_connect()`和`mysqli_query()`来替代`mysql_connect()`和`mysql_query()`。 6. **预处理语句和...

    PHP工程师面试笔试真题(某知名互联网下载服务商)-附解析.doc

    以上就是PHP工程师面试笔试真题的相关解析,涵盖了PHP语言特性、Web开发基础、正则表达式、面向对象编程、数据库操作以及HTTP协议等多个方面。掌握这些知识将有助于提升PHP工程师的技能水平和面试准备。

    php入门教程

    对象是面向对象编程的基础,PHP支持类(class)的定义和实例化(object),如: ```php class Greeting { public function sayHello($name) { echo "Hello, $name"; } } $obj = new Greeting(); $obj-&gt;sayHello(...

    解析PHP高效率写法(详解原因)

    在面向对象编程中,静态方法不依赖于类的实例,因此它们的调用速度比实例方法快。在测试时,静态方法的执行速度可能会提高近三倍,尤其是在高频次执行时,效果更加明显。这是因为静态方法在程序开始执行时就已经在...

    HTML+JQuery+Css+HTML5+PHP5.6 CHM格式帮组文档

    PHP5.6是PHP的一个版本,包含了很多改进和新特性,比如面向对象编程的增强、错误处理的改进、更好的数组处理功能和新的函数。它可以嵌入到HTML中,与数据库交互(如MySQL),处理用户表单数据,生成动态网页内容。 ...

    php代码-环境为 PHP7.2 版本

    - 遵循最佳实践,如编写注释、使用命名空间、面向对象编程等,可以使代码更易于维护和扩展。 总的来说,这个压缩包为我们提供了一个研究PHP 7.2环境下的代码实现的机会,通过阅读和分析`main.php`,我们可以学习...

    PHP分页程序的两种方法

    面向对象的方式能够更好地组织代码结构,提高可复用性和可维护性。 1. **创建分页类:** ```php class ShowPage { // 类属性定义 public $link; // 数据库连接 public $query; // 查询语句 public $pagesize ...

Global site tag (gtag.js) - Google Analytics