autojs之递归

简介: 概念递归递归, 先递后归递无可递, 速速归来,急急如律令!!!

概念


递归递归, 先递后归


递无可递, 速速归来,


急急如律令!!!


实例


  1. 遍历文件夹, 获取文件列表
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;
}


  1. 斐波那契数列(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. 阶乘
// ?前的1是必然终止的条件
// n====1时, 往下递, 递的同时, 满足归的条件, 直接返回
// 其他条件就一直往下递
f = (n) => (n === 1 ? 1 : n * f(n - 1));
log(f(3));


  1. 遍历对象属性, 打印包含runtime的属性
let myEngine = engines.myEngine();
getTheSpecifiedAttribute(myEngine);
function getTheSpecifiedAttribute(obj) {
  for (var k in obj) {
    if (Object.prototype.toString.call(obj[k]) === "[object Object]") {
      getTheSpecifiedAttribute(obj[k]);
    } else {
      k = k.toLowerCase();
      if (k.indexOf("runtime") > -1) {
        log({
          obj: obj,
          k: k,
        });
      }
    }
  }
}


名人名言


思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程


声明


部分内容来自网络
本教程仅用于学习, 禁止用于其他用途


相关文章
|
8月前
|
算法
【递归搜索回溯专栏】专题一递归:汉诺塔
【递归搜索回溯专栏】专题一递归:汉诺塔
54 0
|
人工智能 前端开发 Java
autojs非常见函数1
牙叔教程 简单易懂
2047 0
|
Java Android开发
autojs非常见函数2
autojs非常见函数2
1083 0
|
5月前
|
Python
【Leetcode刷题Python】199. 二叉树的右视图
LeetCode上199号问题"二叉树的右视图"的Python实现,通过深度优先搜索算法按层序从右向左访问节点,以获取每层的最右边节点的值。
32 4
|
5月前
|
Python
【Leetcode刷题Python】404. 左叶子之和
LeetCode第404题"左叶子之和"的Python解决方案,通过深度优先搜索(DFS)遍历二叉树,累加所有左叶子节点的值来求解。
30 1
|
8月前
|
缓存 Python
最后一次AutoJs超神级代码分享
最后一次AutoJs超神级代码分享
140 0
|
8月前
|
缓存 数据安全/隐私保护 Python
AutoJs超神级代码分享大更新
AutoJs超神级代码分享大更新
224 0
LeetCode刷题之合并两个链表(源代码➕讲解)
LeetCode刷题之合并两个链表(源代码➕讲解)
|
算法
代码随想录算法训练营第十九天 | LeetCode 654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树
代码随想录算法训练营第十九天 | LeetCode 654. 最大二叉树、617. 合并二叉树、700. 二叉搜索树中的搜索、98. 验证二叉搜索树
64 0
刚学完二叉树,来试试这些oj题练练手吧!
刚学完二叉树,来试试这些oj题练练手吧!
83 0

热门文章

最新文章