您的位置 首页 java

初探递归算法

 猿灯塔   文末有白嫖惊喜哦!欢迎想要的朋友私聊我哦!  

什么是递归算法?

简单的理解就是,函数里面直接或者间接的调用函数本身.

递归函数的特点

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)
}  
 感谢大家的观看,如果可以的话,

我是否有荣幸能得到你们的点赞与转发呢!

另外!小编这里有免费的JAVA干货资料以及面试资料

有需要的朋友私聊我噢  

初探递归算法

初探递归算法

初探递归算法

初探递归算法

初探递归算法

文章来源:智云一二三科技

文章标题:初探递归算法

文章地址:https://www.zhihuclub.com/195480.shtml

关于作者: 智云科技

热门文章

网站地图