关于计算机中的递归

#include <stdio.h> 

 

int factorial(int n) { 

    if (n == 0) { 

        return 1; 

    } else { 

        return n * factorial(n-1); 

    } 

} 

 

int main() { 

    int n; 

    scanf("%d", &n); 

    printf("%d! = %d\n", n, factorial(n)); 

    return 0; 

}

//当n等于3时

//该程序的运行流程是这样的 首先从主函数作为入口 输入n的值为3,然后进行下一条输出语句

//在输出语句调用了函数factorial 在该函数体中先判断 n是否为0 易知n不为0 则返回3*factorial(2)

//于是又回到函数factorial 判断2是否为0 易知n不为0 则返回2*factorial(1)

//于是又回到函数 factorial 判断1是否为0 易知n不为0 则返回 1*factorial(0)

//于是又回到函数 factoral 判断0是否为0 易知n为0 则返回1

//故factorial(0) = 1(返回值)

       factorial(1) = 1*factorial(0)

       factorial(2) = 2*factorial(1)

       factorial(3) = 3*factorial(2) = 3*2*factorial(1) = 3*2*1*factorial(0) = 3*2*1*1 = 6

//即最终的输出结果为 3!=6

//该程序通过递归实现了计算n的阶乘的功能 在程序运行过程中函数不断调用自己。

通常递归用于排序和搜索,通过以上案例对递归有了初步的认识之后,我们来看一下,在复制粘贴文件夹的时候,如何通过递归将文件夹以及文件夹中的内容一并复制粘贴

在linux系统中 cp [-r] 参数1 参数2

 -r选项,可选,用于复制文件夹使用,表示递归

这里的递归详细来讲, Unix/Linux 系统中,'cp' 命令用于复制文件或目录。当使用 'cp' 命令复制目录时,如果没有添加 '-r' '-R' 选项,它将只复制目录本身,而不会复制目录内部的内容。

这是因为 'cp' 命令被设计为仅复制文件,而不是目录。目录在 Unix/Linux 系统中被视为特殊类型的文件,称为文件夹,它们包含其他文件和子目录的引用。因此,当使用 'cp' 命令复制目录时,实际上是在复制这个特殊的文件夹文件,而不是其中包含的文件和子目录。

'-r' '-R' 选项告诉 'cp' 命令递归地复制目录及其所有内容。这意味着 'cp' 命令将遍历源目录的所有子目录和文件,并将它们复制到目标目录中。如果目标目录不存在,'cp' 命令会创建它。如果目标目录已经存在,'cp' 命令会将源目录的内容添加到目标目录中。

递归复制目录的过程是这样的:首先,'cp' 命令会复制源目录中的第一个文件到目标目录中。然后,它会检查源目录中是否有子目录。如果有,'cp' 命令会进入子目录,并在目标目录中创建一个相应的子目录,然后递归地复制子目录中的文件。这个过程会一直进行,直到复制完源目录中的所有文件和子目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值