概念
递归递归, 先递后归
递无可递, 速速归来,
急急如律令!!!
实例
-
遍历文件夹, 获取文件列表
let dirPath = "/sdcard/脚本"; let filePathList = getFilePathList(dirPath); log(filePathList); function getFilePathList(dirPath, filePathList) { filePathList = filePathList || []; var fileNameList = files.listDir(dirPath); var len = fileNameList.length; for (var i = 0; i < len; i++) { let filepath = files.join(dirPath, fileNameList[i]); if (files.isFile(filepath)) { filePathList.push(filepath); } else { // 文件夹, 继续向下递 getFilePathList(filepath, filePathList); } } // 文件遍历完成, 终止条件, 返回结果 return filePathList; }
-
斐波那契数列(Fibonacci sequence)
function fib(n) { // 终止条件 // 递的同时, 也满足归的条件 if (n == 1 || n == 2) { return 1; } // 一直往下递 return fib(n - 1) + fib(n - 2); } let r = fib(10); log(r);
-
阶乘
// ?前的1是必然终止的条件 // n====1时, 往下递, 递的同时, 满足归的条件, 直接返回 // 其他条件就一直往下递 f = (n) => (n === 1 ? 1 : n * f(n - 1)); log(f(3));
微信公众号 AutoJsPro教程
QQ群
747748653