Heim > Backend-Entwicklung > PHP-Tutorial > 关于递归的问题

关于递归的问题

WBOY
Freigeben: 2016-06-23 13:26:40
Original
912 Leute haben es durchsucht

function getArr($arr='') {    for ($i = 0; $i <= 9; $i++) {        $arr[] = $i;          if (count($arr) < 3) {        	  echo (count($arr)), "|<br/>";  //  这里为什么输出2个2?            getArr($arr);     //  这里不是开辟新栈吗?新栈的变量$i应该好没有执行$i++        }    }    return $arr;    }$arr = array();echo "<pre class="brush:php;toolbar:false">";print_r(getArr($arr));echo "
Nach dem Login kopieren
";
上面注释getArr($arr) 这里不是开辟新栈吗?新栈的变量$i应该还没有执行$i++,为什么输出
1|2|2|Array(    [0] => 0    [1] => 1    [2] => 2    [3] => 3    [4] => 4    [5] => 5    [6] => 6    [7] => 7    [8] => 8    [9] => 9)
Nach dem Login kopieren

echo (count($arr)), "|
"; 上面这里为什么输出2个2?


回复讨论(解决方案)

这样应该看得清楚些

function getArr($arr='') {    printf("传入 %s 大小 %d", print_r($arr, 1), count($arr));    for ($i = 0; $i <= 9; $i++) {        $arr[] = $i;          if (count($arr) < 3) {              echo ' 赋值后 ', (count($arr)), "<br>";            getArr($arr);        }    }    return $arr;     } $arr = array();getArr($arr);
Nach dem Login kopieren
Nach dem Login kopieren
传入 Array ( ) 大小 0 赋值后 1传入 Array ( [0] => 0 ) 大小 1 赋值后 2传入 Array ( [0] => 0 [1] => 0 ) 大小 2 赋值后 2传入 Array ( [0] => 0 [1] => 1 ) 大小 2
Nach dem Login kopieren
Nach dem Login kopieren
由于参数不是传引用,也没有承接递归的返回
所以递归只是干扰视线

这样应该看得清楚些

function getArr($arr='') {    printf("传入 %s 大小 %d", print_r($arr, 1), count($arr));    for ($i = 0; $i <= 9; $i++) {        $arr[] = $i;          if (count($arr) < 3) {              echo ' 赋值后 ', (count($arr)), "<br>";            getArr($arr);        }    }    return $arr;     } $arr = array();getArr($arr);
Nach dem Login kopieren
Nach dem Login kopieren
传入 Array ( ) 大小 0 赋值后 1传入 Array ( [0] => 0 ) 大小 1 赋值后 2传入 Array ( [0] => 0 [1] => 0 ) 大小 2 赋值后 2传入 Array ( [0] => 0 [1] => 1 ) 大小 2
Nach dem Login kopieren
Nach dem Login kopieren
由于参数不是传引用,也没有承接递归的返回
所以递归只是干扰视线


非常感谢。
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage