递归中使用return的注意事项

原创 木鱼  2017-09-11 11:08  阅读 120 次

如果对递归没有一个好的理解的话,

会很容易范一个错误,比如想用return得到最终返回值

上一段代码:

function reduce ( $num ) 
{
	$num--;
	if ( $num < 1 ) {
		return $num;
	} else {
		reduce( $num );
	}
}

echo reduce(10);

乍一看,没毛病啊。

但是你输出的时候会发现他没有任何结果! 为什么?

正确的代码:

function reduce ( $num ) 
{
	$num--;
	if ( $num < 1 ) {
		return $num;
	} else {
		return reduce( $num );
	}
}

echo reduce(10);

其实想一下递归的流程,就会懂是为什么了。

自己盗自己的图,哈哈。

 

递归就好像一棵树,无限分叉发芽。

当内部再次调用reduce函数的时候,其实函数是没有return的返回值的,就算$num<1成立,由于函数没有return reduce(),还是等于没有返回的。。。

本文地址:https://www.m5yu.com/recursion-return.html
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:木鱼博客
版权声明:本文为原创文章,版权归 木鱼 所有,欢迎分享本文,转载请保留出处!

发表评论