js__之递归

Posted 飞鸟和蝉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js__之递归相关的知识,希望对你有一定的参考价值。

  1. 题目1:     一张纸厚度为0.0001米, 折叠多少次可以超过10000米
  2. 方法一:  for循环:
  3. let a = 0.0001;
        let num = 0;
        for(i=0;;i++){
            a *= 2
            num++;
            if(a > 10000){
                break;
            }
        }
        console.log(num);
        // 27 次
  4. 方法二: 递归
  5. let a = 0.0001;
        let num = 0;
        function fn(){
            a *= 2   // a += a ,折叠一次
            num ++
            if(a  < 10000){
                fn()
            } 
            console.log(num);
        }
        fn()
        // 27 次
  6. 题目2  :  改造后端返回过来的 数据
         后端把 所有的评论 数据 都放在一起了,  如果是这样就不能直接渲染,   需要自己  改造一下  ,一级评论 , 二级评论, 三级评论, 四级评论
    image
    被改造后的数据  要达成这样:
    image
  7. 方法一:   使用 for循环  每一次循环 给 当前的对象添加一个  child的数组; 用来放下一级评论:
    找出所有 一级评论:
    image
    找出 二级评论,  并且存在一级对象的  child数组中
    image image
    找出 三级评论, 并且存在二级对象的 child数组中:
    image image

    但是: 如果有 100层 或者 1000层; 用for循环来做, 就会无限嵌套....,  代码重复高  ,  所以 不推荐这种写法...
  8. 方法二:  使用递归函数:
    先 找出 所有 一级评论
    image image

    最后: 使用 递归自调用,
    image
    image

以上是关于js__之递归的主要内容,如果未能解决你的问题,请参考以下文章

(转)博客园登陆__JSEncrypt 分析

d3.js之树形折叠树

算法之使用递归求解全排列

js递归错误

python_之递归函数

py04_03:函数之递归函数