JS递归详解

递归函数有两个主要部分:基本情况和递归情况。

  • 基本情况:这是问题的简单情况,可以直接解决。
  • 递归情况:这是问题的复杂情况,可以分解为更小的子问题,并通过递归调用自身来解决。

1. 计算阶乘 一个数的阶乘是所有小于及等于该数的正整数的乘积。

function factorial(n) {  
    // 基本情况  
    if (n === 0) {  
        return 1;  
    }  
    // 递归情况  
    else {  
        return n * factorial(n - 1);  
    }  
}  
console.log(factorial(5)); // 输出:120
2. 计算斐波那契数列 斐波那契数列是一个由0和1开始,之后的斐波那契数是前两个数的和的序列。
function fibonacci(n) {  
    // 基本情况  
    if (n <= 1) {  
        return n;  
    }  
    // 递归情况  
    else {  
        return fibonacci(n - 1) + fibonacci(n - 2);  
    }  
}  
console.log(fibonacci(8)); // 输出:21
3. 遍历目录结构
function traverseDirectory(path) {  
    // 读取目录下的所有文件和文件夹  
    const files = readFilesInDirectory(path);  
      
    for (const file of files) {  
        if (isFile(file)) {  
            console.log('文件:', file);  
        } else if (isDirectory(file)) {  
            // 递归遍历子目录  
            traverseDirectory(file);  
        }  
    }  
}  
traverseDirectory('/path/to/directory');
4.计算最大公约数(GCD)公约数是两个或多个整数共有约数中最大的一个

function gcd(a, b) {  
    // 基本情况  
    if (b === 0) {  
        return a;  
    }  
    // 递归情况  
    else {  
        return gcd(b, a % b);  
    }  
}  
console.log(gcd(48, 18)); // 输出:6
5.递归实现字符串反转
function reverseString(str) {  
    // 基本情况  
    if (str.length === 0) {  
        return '';  
    }  
    // 递归情况  
    else {  
        return reverseString(str.slice(1)) + str[0];  
    }  
}  
console.log(reverseString('hello')); // 输出:'olleh'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不耽搁摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值