遞歸接收return爲null

在遞歸函數中返回值問題

/* 循環去除字符串左邊的0 */
function removeLeftZero($str){
	if($str['0'] == '0'){
		$str = substr($str, '1');
		removeLeftZero($str);
	}else{
		return $str;
	}
}

在大多數人看來這段代碼沒有問題,如果不是運行一下也不知道問題出在哪?這樣運行以後如果是遞歸是不會有返回值的,遞歸後即使滿足else條件也不會有返回值,應該改爲

/* 循環去除字符串左邊的0 */
function removeLeftZero($str){
	if($str['0'] == '0'){
		$str = substr($str, '1');
          //此處如果不加return那麼返回僅僅是給這塊的這個方法返回
          //因爲是這塊遞歸調用才走到else的
          //即遞歸裏的這個方法纔可以接收到返回的
          //此處加上return目的是爲了返回給外面調用遞歸方法的方法
          //加上後外面纔可以接收到返回
		return removeLeftZero($str); // 給函數增加返回值
	}else{
		return $str;
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章