ホームページ  >  記事  >  バックエンド開発  >  PHPでの再帰分析について

PHPでの再帰分析について

不言
不言オリジナル
2018-06-11 11:36:231647ブラウズ

この記事では、主に php での再帰分析を紹介します。これは、必要な友人に参考にしていただけると思います。

再帰とは何ですか?

一般的な例を挙げてください:

#8 ポンドのリンゴがあり、それを切り分けたいと考えています。同じ重さのいくつかの部分、それぞれの重さは 1 テール以下です。あなたは間違いなくこれを行うことを考えるでしょう:

1.まず、リンゴを同じ重さの 2 つの部分 A1 と A2 に切ります。

2.A1 の 1 つの部分を A11 と A12 の 2 つの等しい部分に切り、A2 を 2 つの等しい部分 A21 に切ります。と A22;

#3.A11 を 2 つの等しい部分に切ります...

#4.

各小部分が 1 梁以下になるまで。

#上記の例は、大きなものをいくつかの小さなものに変える再帰的モデルであり、その方法は毎回同じです。

Program

Self自分自身を呼び出すプログラミング手法は、Recursion と呼ばれます。 (再帰再帰には直接再帰と間接再帰が含まれます

•直接再帰: 関数は実行中にそれ自体を呼び出します。

•間接再帰: 関数は実行中に他の関数を呼び出し、その後、これらの関数を通じて自分自身を呼び出します。

再帰には 4 つの特徴があります:

1.最終的に到達できる終了条件でなければなりません。そうでない場合、プログラムは無限ループに陥ります。問題の規模が元の問題よりも大きい 小さい、または終了条件に近い

3.副問題は次のようなものである可能性があります。終了条件が満たされているため、再帰的に呼び出すか、直接呼び出すことで解決できます。 ;

4.副次的な問題の解決策は、次のとおりです。問題全体の解決策に組み合わされる必要があります。

#上記の例は、上記の 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 つのよくある例: 等差数列の合計を求めてみます: 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。