zoukankan      html  css  js  c++  java
  • 水平遍历和嵌套递归

    程序中存在着一些有意思的逻辑,比如多层嵌套可以用递归遍历,比如同层的if else可以用数组遍历。

    下面举例说明,多层嵌套的if else想要递归遍历需要写成下面的形式,以及用特定形式的递归遍历:

    多层嵌套的if else转写成的函数

     let p1 = false,
            p2 = true,
            p3 = false;
        let test = function() {
            if (p1) {
                return '终止1';
            } else {
                return function() {
                    if (p2) {
                        return '终止2'
                    } else {
                        return function() {
                            if (p3) {
                                return '终止3'
                            }
                        }
                    }
                }
            }
        }

      对多层嵌套的遍历:

    function yunxing1() {
            while (test()) {
                test = test()
                if (typeof test === 'string') {
                    alert(test)
                    return '终止'
                }
            }
        }
        yunxing1()
    

      同层多个if else改写的函数以及遍历方法

    let i = 1,
            a = 2,
            b = 3;
        function simpleVlidate() {
            let varr = [];
            varr.push(() => {
                if (i === 1) {
                    return '不能等于1'
                }
            })
            varr.push(() => {
                if (a === 2) {
                    return '不能等于2'
                }
            })
            varr.push(() => {
                if (b === 3) {
                    return '不能等于3'
                }
            })
            return varr
        }
        let arrs = simpleVlidate();
    
        function yunxing() {
            for (let i = 0, fn; fn = arrs[i++];) {
                if (fn()) {
                    alert(fn())
                    return;
                }
            }
            console.log(343433333333)
        }
    
        yunxing();
    

      以上,总结的有意思的逻辑,也是可以简化代码的方法。这样的逻辑还有很多………………

  • 相关阅读:
    父进程pid和子进程pid的大小关系
    static 和extern关键字
    linux源码下载
    tar命令
    USB开发——内核USB驱动+libusb开发方法
    microchip PIC芯片使用方法
    android下4G上网卡
    Modem常用概念
    4G上网卡NIDS拨号之Rmnet驱动
    Uboot源码解析
  • 原文地址:https://www.cnblogs.com/zhensg123/p/10753114.html
Copyright © 2011-2022 走看看