shell 函数递归
局部函数变量的一个特性是自成体系。除了从脚本命令行处获得的变量,自成体系的函数不需要使用任何外部资源。
这个特性使得函数可以递归地调用,也就是说,函数可以调用自己来得到结果。通常递归函数都有一个最终可以迭代到的基准值。许多高级数学算法用递归对复杂的方程进行逐级规约,直到基准值定义的那级。
递归算法的经典例子是计算阶乘。一个数的阶乘是该数之前的所有数乘以该数的值。因此,要计算5的阶乘,可以执行如下方程:
5! = 1 * 2 * 3 * 4 * 5 = 120
使用递归,方程可以简化成以下形式:
x! = x * (x-1)!
也就是说,x的阶乘等于x乘以x-1的阶乘。这可以用简单的递归脚本表达为:
function factorial { if [ $1 -eq 1 ] then echo 1 else local temp=$[ $1 - 1 ] local result='factorial $temp' echo $[ $result * $1 ] fi
}
阶乘函数用它自己来计算阶乘的值:
$ cat test13
#!/bin/bash
function factorial { if [ $1 -eq 1 ] then echo 1 else local temp=$[ $1 - 1 ] local result=$(factorial $temp) echo $[ $result * $1 ] fi
} read -p "Enter value: " value
result=$(factorial $value)
echo "The factorial of $value is: $result"
$
$ ./test13
Enter value: 5
The factorial of 5 is: 120
shell 函数递归相关推荐
- shell 死循环if判断_运维小技巧(2):shell函数
shell函数是什么 shell函数可以看作是一组shell命令的组合,用来完成一个特定的功能,它的功能和java中的方法类似. 2. shell函数长什么样 铛铛铛,先上代码. function l ...
- 【拔刀吧少年】之shell函数
函数 一.shell函数定义 二.格式 三.函数返回值 四.函数传参 五.函数变量的作用范围 六.递归 1.阶乘 2.递归查目录 七.创建函数库 总结 一.shell函数定义 将命令序列按格式写在一起 ...
- shell函数与数组(了解函数,递归函数运用,了解数组,创建基数和偶数数组,冒泡排序,调试命令)
文章目录 shell函数 了解函数 函数定义 递归函数 举例子 shell数组 定义数组 数组包括的数据类型与数组操作 数组操作 举例(快速创建数组.奇数数组) 冒泡排序法 调试命令 set命令 ba ...
- shell 函数详解
目录 函数 一,什么是函数 二, 函数的返回值 三,函数语法 示例1: 示例2: 四,函数的调用 示例1: 示例2: 五,函数库文件 六, 递归函数 示例1: 示例2: 函数 一,什么是函数 1.把相 ...
- Shell 函数的定义和使用
目录 一.Shell的函数的定义 1.1定义 1.2 函数返回值 1.3 函数传参 1.4 函数变量的作用范围 1.5 函数递归 1.5.1 阶乘 1.5.2 递归目录 1.6 创建库 一.Shell ...
- shell函数(用法及定义)
shell函数 将命令序列按格式写在一起 可方便重复使用命令序列 文章目录 shell函数 一.shell函数定义: 方法一 方法二 二.函数返回值: 以乘法2乘以某数为例 三.函数传参: 加法 四. ...
- Shell函数知识点大全
文章目录 一.Shell 函数 二.Shell 函数定义 三.函数返回值 四.函数传参 五.函数变量的作用范围 六.递归 1.阶乘 2.递归目录 七.函数库 一.Shell 函数 1.将命令序列按格式 ...
- shell脚本——shell函数详解
shell脚本--shell函数详解 一.shell函数 1.shell函数的概念 2.shell函数的格式 (1)函数的定义 (2)调用函数的方法 3.函数返回值 4.函数传参 5.函数变量的作用范 ...
- shell 函数 与 函数库
目录 前言 一.shell 函数 1.1 Shell函数定义 1.2 函数返回值 1.3 函数参数传值 1.4 函数变量生命周期 1.5 函数中可以调用函数 二.函数之递归 2.1 阶乘 2.2 遍历 ...
最新文章
- Agile Use Cases in Four Steps
- 如何检测过期的统计信息(转)
- spring中事务配置的3种方式
- HDU 3534 Tree (经典树形dp)
- 定制安装操作系统(二)
- uva 816(经典bfs例子)
- 为了一个HTTPS,浏览器操碎了心···
- python中有哪些重要的书写规则_一文读懂Python代码的书写规范
- 模拟知乎登陆(requests和scrapy)
- EifficientDet论文笔记
- InstallShield 2008 终止声明 (EOL)对最终客户意味着什么
- Bootstrap创建拼接式按钮下拉菜单
- 如何在pe里加载阵列卡驱动_PE中RAID卡驱动的添加办法
- zbbz 坐标标注lisp_cad坐标标注插件怎么用
- 定位技术的发展过程,从GPS开始
- 【计算机体系结构】记分牌调度算法 Python
- 深度学习——感知机:多层感知机(multi-layered perceptron)图文详解
- ubuntu使用minicom连接交换机/路由器Console口详细教程
- 数字电路5(基本CMOS逻辑门电路)
- SecureCRT工具介绍