网站首页 > 知识剖析 正文
猿灯塔 文末有白嫖惊喜哦!欢迎想要的朋友私聊我哦!
什么是递归算法?
简单的理解就是,函数里面直接或者间接的调用函数本身.
递归函数的特点
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干货资料以及面试资料
有需要的朋友私聊我噢
猜你喜欢
- 2024-11-14 vue uniapp中数组的操作方法 uniapp vuecli
- 2024-11-14 JavaScript Array 对象 javascript array splice
- 2024-11-14 js中数组方法全解 js数组常用的方法
- 2024-11-14 TS类型体操,看懂你就能玩转TS了 tststs
- 2024-11-14 JS原生对数组操作的常用方法 原生js操作dom
- 2024-11-14 PHP8中获取并删除数组中最后一个元素-PHP8知识详解
- 2024-11-14 mysqli_fetch_assoc常用的函数汇总
- 2024-11-14 碎片时间学编程「203]:根据功能对数组元素进行分组
- 2024-11-14 PHP是如何实现多线程编程的? php是如何实现多线程编程的
- 2024-11-14 PHP8的数组-PHP8知识详解 php8的jit
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)