首頁  >  文章  >  後端開發  >  關於php中的遞迴分析

關於php中的遞迴分析

不言
不言原創
2018-06-11 11:36:231645瀏覽

這篇文章主要介紹了關於php中的遞迴分析,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

##什麼叫遞歸?

舉一個通俗的例子:

#有一個8兩個重的蘋果要你切成重量相等的若干份,每一份的重量不能大於1倆。你一定會想到要這樣做:

1.#第一刀先把一個蘋果切成重量均等的2份A1和A2 ;

2.再把其中的一份A1切成重量均等的兩份A11和A12, 把A2切成均等的兩份A21和A22;

3.把A11切成均等的兩份…

#4.直到每一小份都小於等於1兩個。

以上的例子就是遞歸一個模型,把一個大的事物化成若干個小的事物,每一次使用的方法都相同。

程式自身呼叫自身的程式設計技巧稱為遞迴#( recursion遞歸有直接遞迴與間接遞迴

#•直接遞迴:函數在執行過程中呼叫本身。

•間接遞歸:函數在執行過程中呼叫其它函數再經過這些函數呼叫本身。

遞迴有四個特性:

1.#必須有可最終達到的終止條件,否則程式將陷入無限迴圈;

#2.子問題在尺度上比原問題小,或更接近終止條件;

3.子問題可透過再次遞歸呼叫求解或因滿足終止條件而直接求解;

4.子問題的解應能組合為整個問題的解。

上面的範例中也滿足以上的四點性質:

(1).終止條件是每一份的重量不能大於1兩個;(2).每一次切的大小都比上一次小;(3).每一次切的方式都相同,所以子問題可遞歸呼叫;(4).最終切成的每一小份也就是要求的解。

function cutApple($w,$t){
	if($w<1){
		echo "已经切完了";
	}
	else{
		echo "第".$t."次切割,每份重量是:".($w/2)."<br>";
		$t+=1;
		cutApple($w/2,$t);
	}
}

結果:

#第1次切割,每份重量是:7.5

#第2次切割,每份重量是:3.75
第3次切割,每份重量是:1.875
第4次切割,每份重量是:0.9375

#已經切完了

#再舉一個通俗的例子:試求等差數列的和:1 2 3 4 ... 98 100;

/**
 * 等差数列求和
 * @param [int] $n [第一个数]
 * @param [int] $m [第二个数]
 */
function add($n,$m){
	if(!is_int($n)||!is_int($m)) 
		return false;
	static $sum=0;
	$sum+=$n;
	$n++;
	if($n>$m) return $sum;
	return add($n,$m);
}
echo add(1,100);

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

PHP如何动态修改配置文件

以上是關於php中的遞迴分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn