S21.shell脚本每日一练

41.递归

阶乘是基斯顿·卡曼于 1808 年发明的运算符号,是数学术语,一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0和1的阶乘为1,自然数n的阶乘写作n!

n!=1×2×3×…×n

阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n

n!=n(n-1)(n-2)…1

n(n-1)! = n(n-1)(n-2)!

[root@rocky8 ~]# vim fact.sh
#!/bin/bash
#
#**********************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2021-10-21
#FileName:      fact.sh
#URL:           raymond.blog.csdn.net
#Description:   The test script
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
fact(){
    
    
    if [ $1 -eq 1 ];then
        echo 1
    else
        echo $[$1*$(fact $[$1-1])]
    fi    
}
fact $1

[root@rocky8 ~]# bash fact.sh 5
120

[root@rocky8 ~]# vim fact2.sh
#!/bin/bash
#
#**********************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2021-10-21
#FileName:      fact2.sh
#URL:           raymond.blog.csdn.net
#Description:   The test script
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
fact(){
    
    
    local num=$1
    if [[ $num -eq 0 ]];then
        fac=1
    else
        dec=$((num-1))
        fact $dec
        fac=$((num*fac))
    fi
}
fact $1
echo "$1的阶乘是:$fac"

[root@rocky8 ~]# bash fact2.sh 5
5的阶乘是:120

42.fork 炸弹

fork 炸弹是一种恶意程序,它的内部是一个不断在 fork 进程的无限循环,实质是一个简单的递归程序。由于程序是递归的,如果没有任何限制,这会导致这个简单的程序迅速耗尽系统里面的所有资源

参考:https://en.wikipedia.org/wiki/Fork_bomb

[root@rocky8 ~]# vim Bomb.sh
#!/bin/bash
#
#**********************************************************************************************
#Author:        Raymond
#QQ:            88563128
#Date:          2021-10-21
#FileName:      Bomb.sh
#URL:           raymond.blog.csdn.net
#Description:   The test script
#Copyright (C): 2021 All rights reserved
#*********************************************************************************************
./$0|./$0&

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/126772677