php递归调用函数 不解 求帮助

作者&投稿:郗榕 (若有异议请与网页底部的电邮联系)
PHP 递归函数若不满足条件则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行?~

...
function s(){ //这个相对于里面的s()就叫上一层

s();

}

这个问题得从函数调用的时候内存中变化来理解,在一段php程序里面,每次执行到函数部分时,内存都会开辟一片新的空间,(姑且称之为空间吧),当遇到一个函数开辟一个空间的时候,也就是说$n=10的时候,先执行第一个echo $n." ",这里输出一个数字10吧,然后进入判断语句,遇到test()函数,开辟一个新空间,先不去看新空间里面有什么,下面的echo $n." ";肯定还是要执行的,现在等于说输出了这样的一个结果10 test(9) 10,下面再看test9的情况,同理是不是输出了10 9 test(8) 9 10,继续执行下去,你会发现程序的结果就是你输入的结果了。希望对你有所帮助!

就是把这些字符倒过来输出
为hello

递归就是一层一层递归下去的,当且仅当最后一层有返回值的时候才会返回。
if(strlen($str)>0)
{
reverse_i(substr($str,1));

}
echo substr($str,0,1);

return;

虽然第一次进入了reverse_i这个函数,但是必须此函数执行完成之后才能执行下面的
echo substr($str,0,1); 第二次进入了reverse_i 发现又符合条件,然后又进入了循环,一直到最后一层输出了h,才return 返回倒数第二层,一直返回,所以在屏幕上返回的是 hello
递归也不是很难,你自己跟着循环走一遍,画个图,把每一步都记录下来,就知道怎么回事的了!

函数内部调用自己,调用时再调用自己,这样无限调用下去,直到条件不符了,停止调用

你这个是循环展示了 显示h之后又继续显示了ello


成县13238166690: php递归调用函数 不解 求帮助 -
征吴悦康: 就是把这些字符倒过来输出 为hello

成县13238166690: PHP递归函数的问题 -
征吴悦康: 这个问题得从函数调用的时候内存中变化来理解,在一段php程序里面,每次执行到函数部分时,内存都会开辟一片新的空间,(姑且称之为空间吧),当遇到一个函数开辟一个空间的时候,也就是说$n=10的时候,先执行第一个echo $n." ",这里输出一个数字10吧,然后进入判断语句,遇到test()函数,开辟一个新空间,先不去看新空间里面有什么,下面的echo $n." ";肯定还是要执行的,现在等于说输出了这样的一个结果10 test(9) 10,下面再看test9的情况,同理是不是输出了10 9 test(8) 9 10,继续执行下去,你会发现程序的结果就是你输入的结果了.希望对你有所帮助!

成县13238166690: 求解php递归函数新手问题. -
征吴悦康: 您好,是这样的按照你的思路到了test(0)首先会调用最开始的echo $n.“ ” 这样就成了2 1 0而后继续判断 走向else分支 输出了 <-->此时还没完事 你可能忘了最后还有一个echo $n." " 这时就变成了2 1 0 <-->0此时程序回调,返回到test(1)的时候 再执行echo $n." " 此时2 1 0 <-->0 1最后 回到test(2) 再执行echo $n." " 此时2 1 0 <-->0 1 2说的比较详细,如果还不理解,可以给我留言.希望帮你解决了问题~

成县13238166690: php 编程,能帮忙解释一下递归调用吗.具体看下面代码 -
征吴悦康: 你可以这样想,一开始是5然后到return $5* recurser (5-1); 时,return语句尚未执行完,所有参数压栈,进入recurser (5-1)语句,到return语句时重复上述步骤压栈,一直到n=0时recurser (1-1)=1 逐级弹出栈,并得到5!. 用栈思考这个递归

成县13238166690: 简单的php递归调用问题 -
征吴悦康: 这是因为 static 的原因. 静态变量(static)仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果. 所以你的代码里第一次运算完了之后$i的值为2, 第二次就直接在2上加1,就是3了. 所...

成县13238166690: 递归函数 PHP求解 -
征吴悦康: 除了return打错了之外,代码执行该是没有问题才对.return错了,应该一行正确的结果都出不来,直接就报错了. 还有就是,这种"<td>$%s</td>>"写法,最后那个“>”在IE系列浏览器里面看肯定变得奇怪,我不明白为何必须要这个符号,也不是必须的,好的情况是能出现一行“>”,例如在火狐,坏的情况是每个“>”各成一行,例如ie.很大程度上有画蛇添足的意味

成县13238166690: 关于PHP中的递归函数的问题 -
征吴悦康: 童鞋你好,你会产生这样的疑问是因为你没有搞清楚函数参数的使用范围,一级递归的过程,下来解析一下此函数的递归过程:10 第一次递归 sum=10,先输出10,执行递归后,demo里面的 依然是109 第二次递归 sum=9,先输出9,执行递归...

成县13238166690: php 麻烦大家帮我看个递归函数问题 -
征吴悦康: function demo($a) { static $sum=10; $sum+=$a; if($a == 1) return $sum; else return demo(--$a); } echo demo(10);

成县13238166690: 麻烦大家帮我看个PHP递归函数问题 -
征吴悦康: 第一、$text=recurset(5);错了,应该是recurser,另外$text后面的分号应该是半角,不应该是全角.写代码要养成一个习惯:function recurser ($n){if ($n==0){ return 1; }else{ return $n * recurser($n-1); }}$text=recurser(5);echo $text;第二、关于...

成县13238166690: php 递归一问帮忙解决 -
征吴悦康: $n=XX;$m=XX; function jx($s){ $ji=1; for($i=1;$i $ji*=$i; } return $ji; } echo jx($n)/(jx($m)*jx($n-$m));

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网