用“类”来代替“递归方法”,用php举例。

递归

问题:一个楼梯有n个台阶,每次上一个或两个台阶,共有多少种上法, 每种走法的步骤是什么样的?
这个简单问题,我们通常的方法是写一个递归调用,简单明了。但是,这里通过类的叠加来实现,虽然本身没有太大的意义,但是这种设计的用途还是满多的,可以自己考虑考虑。
<?php

//一个楼梯有n个台阶,每次上一个或两个台阶,共有多少种上法, 每种走法的步骤是什么样的.
define('TOTLE_STEP', 10);
$p = '';
$obj = new step($p, 0, 0);
$obj->go();

class step{

 var $parent;
 var $count;
 var $step;
 var $son1;
 var $son2;

 function step(&$parent, $step, $count){
        $this->parent = &$parent;
        $this->step = $step;
        $this->count = $count + $step;
 }

 function go(){
  if($this->count==TOTLE_STEP)
   $this->callback();
        if($this->count<=TOTLE_STEP-1){
         $this->son1 = new step($this, 1, $this->count);
         $this->son1->go();
        }
        if($this->count<=TOTLE_STEP-2){
         $this->son2 = new step($this, 2, $this->count);
         $this->son2->go();
        }
 }

 function callback($str=''){
        if($this->parent!=null){
         $str = $this->step.$str;
         $this->parent->callback('--'.$str);
        }else{
         echo $str.'<br>';
        }
 }
}
?>

时间: 2024-07-28 20:19:32

用“类”来代替“递归方法”,用php举例。的相关文章

类的定义-定义类和声明类区别是什么,请举例说明?

问题描述 定义类和声明类区别是什么,请举例说明? 定义类和声明类区别是什么?请举例说明?定义类和声明类区别是什么?请举例说明? 解决方案 声明只是告诉编译器有这么一个变量,但是没有为它分配空间:定义则是为该变量分配空间 比如 class B; //类B的声明 class A{ //.............................. B * ptr_B;. }; class B{ //类B的定义 //.................... }; 解决方案二: 类的定义,是完整定义(可以

C++语言基础 例程 类和对象的简单应用举例

贺老师的教学链接  本课讲解 实例1:求出三角形的周长和面积 #include<iostream> #include<Cmath> #include<cstdlib> using namespace std; class Triangle { public: void setABC(double x, double y, double z);//置三边的值,注意要能成三角形 double perimeter();//计算三角形的周长 double area();//计算

后台开发:核心技术与应用实践2.1 类与对象

第2章 面向对象的C++ 学习C++,一定要学会面向对象编程.首先讲下"面向对象"产生的历史原因,主要有以下两点. (1)计算机只会按照人所写的代码,一步一步地执行下去,最终得到结果.无论程序多么复杂,计算机总是能轻松应付.结构化编程,就是按照计算机的思维写出的代码,但是人看到这么复杂的逻辑,无法进行维护和扩展. (2)结构化设计是以功能为目标来构造应用系统,这种做法导致程序员设计程序时,不得不将客体所构成的现实世界映射到由功能模块组成的解空间中,这种转换过程,背离了人们观察和解决问题

java学习笔记6--类的继承、Object类

1.类的继承 一种由已有的类创建新类的机制,是面向对象程序设计的基石之一.通过继承,可以根据已有类来定义新类,新类拥有已有类的所有功能 Java只支持单继承,每个子类只能有一个直接父类,父类是所有子类的公共属性及方法的集合,子类则是父类的特殊化,继承机制可以提高程序的抽象程度,提高代码的可重用性 基类(base class),也称超类(superclass),是被直接或间接继承的类 派生类(derived-class),也称子类 (subclass),继承其他类而得到的类,继承所有祖先的状态和行

c++-C++怎么把模板类设置为友元?

问题描述 C++怎么把模板类设置为友元? 求好心人解答~~ 1.怎么把模板类设置为友元??模板函数 模板类. 2.设置的时候 需要具体化吗?? 是不是 可以具体化 也可以不具体?? 解决方案 参考:http://www.cnblogs.com/li-peng/p/3512887.html 解决方案二: 根据<C++ Primer>第三版16.4节的叙述,C++类模板友元分为以下几种情况 1.非模板友元类或友元函数. 书上给了一个例子: class Foo{ void bar(); }; tem

Java基础-10总结形式参数,包,修饰符,内部类

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 类,抽象类,接口的综合小练习 /* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员. 乒乓球教练和篮球教练. 为了出国交流,跟乒乓球相关的人员都需要学习英语. 请用所学知识: 分析,这个案例中有哪些

Java基础-01总结概述,dos,功能键,path

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:计算机概述(了解) (1)计算机(2)计算机硬件(3)计算机软件系统软件:window,linux,mac应用软件:qq,yy,飞秋(4)软件开发(理解)软件:是由数据和指令组成的.(计算器)开发:就是把软件做

智能电视用户体验设计分享之遥控器篇

  今天有请负责智能电视APP设计一年半的@卜卜胡萝卜1992 给大家分享一些实用的设计经验,科普智能电视用户体验的基础知识.接上一篇继续探讨问题,本篇关于遥控器. 那种一大条上面都是按钮的遥控器在互联网电视时代已经没有地位,现在不管是哪个品牌的电视,其遥控器上都有必有的8个按键:上/下/左/右/确定/返回/菜单/主页.一般厂商都会有自己单独的快捷键,乐视有Le键,暴风TV有Biu键,康佳有呼Bar键.音量加减键一般的遥控器也会有,频道加减也比较常见.这篇文章主要讲必有8个按钮的常用功能,要设计

jquery中常用的函数和属性详细解析

 本篇文章主要是对jquery中常用的函数和属性进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Dom: Attribute:属性 $("p").addClass(css中定义的样式类型); 给某个元素添加样式 $("img").attr({src:"test.jpg",title:"test Image"}); 给某个元素添加属性/值,参数是map $("input").attr({&qu