文章目录
函数递归
函数递归:函数直接或间接调用自身,注意递归层数,可能会陷入死循环。
递归函数调用,就是把函数本身作为一个参数来调用。函数既是调用者又是被调用者,每调用一层就进入新的一层。
递归简而言之就是自己调用自己
#!/bin/bash
func ()
{
read i
func "$i" #调用自身
echo "$i" #输出$i
}
func #调用函数
这段代码逻辑有问题,函数func里面调用自身的话,在他调用的这个func里面又有一个func的调用,func的调用里面又有一个调用,会进入无限循环。
为了使函数到达目的后就退出,必须要给循环定一个终止条件。条件满足时,不再递归调用,逐层返回,直至最外层调用。
递归示例
递归遍历目录
#! /bin/bash
function read_dir() {
for file in $(ls $1); do
if [ -d $1"/"$file ]; then
read_dir $1"/"$file
else
echo $1"/"$file
fi
done
}
read_dir $1
[root@mdns zaishu]#./funs2.sh /root/zaishu
/root/zaishu/funs2.sh
/root/zaishu/funs.sh
/root/zaishu/hello.sh