用“類”來代替“遞迴方法”,用php舉例。

來源:互聯網
上載者:User
遞迴 問題:一個樓梯有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>';
        }
 }
}
?>



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。