猿灯塔 文末有白嫖惊喜哦!
什么是递归算法?
欢迎想要的朋友私聊我哦!
大略的理解便是,函数里面直接或者间接的调用函数本身.
递归函数的特点1.函数累不调用本身2.须要有明确的结束条件,不然随意马虎造成去世循环.3.递归函数的代码固然简洁,但是实行效率较低,须要结合自己的需求制订相应的算法,不推举利用递归.4.递归函数的实行顺序依次是从外部实行到最里层,当知足限定条件的时候,依次从内部实行到最外层.
算法实战 需求利用递归函数和栈逆序一个栈(只能利用栈一种数据构造)
解题思路(两个递归函数)
1.获取一个栈的栈底元素删除并且返回最底层元素.2.利用1种的递归函数,逆序这个栈
逻辑代码/ 获取并且删除栈的末了一个元素 /function getAndRemoveLastElement (&$stack){ // 弹出最外层的元素. $element = array_pop($stack); if (!empty($stack)) { $last = getAndRemoveLastElement($stack); array_push($stack,$element); return $last; } else { // 递归的结束条件,栈为空. return $element; }}
/ 逆序这个栈. @param $stack /function reverse (&$stack){ // 递归退出的限定条件. if (!empty($stack)) { $i = getAndRemoveLastElement($stack);// 未符合现在条件时,依次从外到里面实行. reverse($stack); // 符合限定条件后依次从里到外向下实行. array_push($stack,$i); } else { // 为空就返回. return ; }}
<?php$stack = array(1,2,3,4,5);reverse($stack);var_dump($stack);
输出为
array(5) { [0]=> int(5) [1]=> int(4) [2]=> int(3) [3]=> int(2) [4]=> int(1)}
感谢大家的不雅观看,如果可以的话,我是否有荣幸能得到你们的点赞与转发呢!
其余!