Maison  >  Article  >  développement back-end  >  À propos de l'analyse récursive en php

À propos de l'analyse récursive en php

不言
不言original
2018-06-11 11:36:231645parcourir

Cet article présente principalement l'analyse récursive en php, qui a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Qu'est-ce que la récursion ?

Donnez un exemple populaire :

Il y a une pomme de 8 livres que vous voulez couper en morceaux poids égal. Plusieurs portions, chacune ne pesant pas plus de 1 tael. Vous penserez certainement à faire ceci :

1.Coupez d'abord une pomme en 2 parties A1 et A2 de poids égal ;

2.Coupez une partie de A1 en deux parties de poids égal, A11 et A12, et coupez A2 en deux parties égales. de A21 et A22;

3.Coupez A11 en deux parties égales...

4.Jusqu'à ce que chaque petite portion soit inférieure ou égale à 1 liang.

L'exemple ci-dessus est un modèle récursif, qui transforme une grande chose en plusieurs petites choses. La méthode est la même à chaque fois.

La technique de programmation d'un programme lui-même s'appelant s'appelle récursion ( récursivité. La récursion inclut la récursivité directe et la récursion indirecte

• Récursivité directe : la fonction s'appelle elle-même pendant l'exécution.

•Récursivité indirecte : Une fonction appelle d'autres fonctions lors de l'exécution puis s'appelle elle-même via ces fonctions.

La récursion a quatre caractéristiques :

1. Là doit être une condition de terminaison qui peut être finalement atteinte, sinon le programme tombera dans une boucle infinie

2. le problème est plus grand que le problème d'origine. Petit ou plus proche de la condition de terminaison

3. résolu en appelant à nouveau de manière récursive ou directement en satisfaisant la condition de terminaison ;

4 Les solutions aux

sous-problèmes devraient pouvoir être résolus. être combinés dans la solution de l’ensemble du problème.

L'exemple ci-dessus satisfait également aux quatre propriétés ci-dessus :

(1).

La condition de terminaison est

Le poids de chaque portion ne peut pas être supérieur à 1deux (2).La taille de chaque coupe doit être être plus grand La dernière fois, c'était petit (3).La méthode de découpe est la même à chaque fois, donc le sous-problème peut être appelé de manière récursive (4). Chaque fois qu'il est finalement coupé, une petite portion est la solution requise.

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

1ère fois Coupe , le poids de chaque portion est : 7,5

La 2ème découpe, le poids de chaque portion est : 3,75

La 3ème découpe, le poids de chaque portion est : 1,875
La 4ème découpe, le poids de chaque portion est : 0,9375

A été coupé

Un autre exemple populaire : essayez de trouver la somme de l'arithmétique séquence : 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如何动态修改配置文件

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn