php 遞歸解析


function test($i){//第一步
	$i  -= 4; 
	if($i<3){ 
		return $i; //第二部
	}else{ 
		test($i); //第三部
	} 
} 
echo test(10); 
</pre><pre code_snippet_id="667672" snippet_file_name="blog_20150515_2_1499735" name="code" class="html">最下面的第一段代碼作爲例子,寫這樣代碼的人可以沒完全理解遞推,下面使用test(10)調用,在執行過程中,如果條件成立,則直接返回結果,如果條件不成立則繼續調用test(),猛一看這樣寫沒問題,其實,當第一次調用條件不成立時再調用一次時,即使成立也沒用返回值,第二段代碼是兩次調的結果:假如在第二次調用,代碼執行到第四步時結果成立,他的動作是return 2;  現在代碼成什麼樣子了呢,看下面
function test($i){//第一步
	$i  -= 4; 
	if($i<3){ 
		return $i; //第二部
	}else{ 
		2;
	} 
} 
echo test(10); 

只有一個單獨的2,他要怎麼返回到下面呢,前面要加一個return ;

所以完整的代碼應該是這樣的。

function test($i){//第一步
	$i  -= 4; 
	if($i<3){ 
		return $i; //第二部
	}else{ 
		return test($i);
	} 
} 
echo test(10); 

function test($i){//第一步
<span style="white-space:pre">	</span>$i  -= 4; 
<span style="white-space:pre">	</span>if($i<3){ 
<span style="white-space:pre">		</span>return $i; //第二步
<span style="white-space:pre">	</span>}else{ 
<span style="white-space:pre">		</span>function test($i){//第 3步
<span style="white-space:pre">			</span>$i  -= 4; 
<span style="white-space:pre">			</span>if($i<3){ 
<span style="white-space:pre">				</span>return $i; //第4步
<span style="white-space:pre">			</span>}else{ 
<span style="white-space:pre">				</span>test();//第5步
<span style="white-space:pre">			</span>} 
<span style="white-space:pre">		</span>} 
<span style="white-space:pre">	</span>} 
} 
echo test(10); 







發佈了28 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章