ex63.sh
来自「BASH Shell 编程 经典教程 《高级SHELL脚本编程》中文版」· Shell 代码 · 共 53 行
SH
53 行
#!/bin/bash# 阶乘# ----# bash允许递归吗? # 嗯, 允许, 但是...# 他太慢了, 所以恐怕你难以忍受. MAX_ARG=5E_WRONG_ARGS=65E_RANGE_ERR=66if [ -z "$1" ]then echo "Usage: `basename $0` number" exit $E_WRONG_ARGSfiif [ "$1" -gt $MAX_ARG ]then echo "Out of range (5 is maximum)." # 现在让我们来了解一些实际情况. # 如果你想计算比这个更大的范围的阶乘, #+ 应该用真正的编程语言来重写它. exit $E_RANGE_ERRfi fact (){ local number=$1 # 变量"number"必须声明为局部变量, #+ 否则不能正常工作. if [ "$number" -eq 0 ] then factorial=1 # 0的阶乘为1. else let "decrnum = number - 1" fact $decrnum # 递归的函数调用(就是函数调用自己). let "factorial = $number * $?" fi return $factorial}fact $1echo "Factorial of $1 is $?."exit 0
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?