再帰
質問: 階段には n 段あります。一度に 1 段または 2 段ずつ上がる方法は何通りありますか?
この単純な問題に対して、私たちの通常の方法は、単純かつ明確な再帰呼び出しを記述することです。ただし、ここではクラスの重ね合わせによって実装されていますが、それ自体にはあまり意味はありませんが、この設計には多くの用途があるため、自分で検討することができます。
//階段は n 段あり、1 段または 2 段上がるたびに、道は何通りあり、それぞれの階段は何歩かを示します。
define('TOTLE_STEP', 10);
$p = '';
$obj = 新しいステップ($p, 0, 0);
$obj->go();
クラスステップ{
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() ; $ this-& gt; count & lt; = tople_step-) {
$ this-& gt; Son1 = 新しいステップ ($ this, 1, $ This-& gt; GT ;go (); ->son2-> ;go (); step.$str;
$this->parent->callback('--'.$str);