首页 > 其他 > 详细

水平遍历和嵌套递归

时间:2019-04-22 21:35:22      阅读:136      评论:0      收藏:0      [点我收藏+]

程序中存在着一些有意思的逻辑,比如多层嵌套可以用递归遍历,比如同层的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();

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

水平遍历和嵌套递归

原文:https://www.cnblogs.com/zhensg123/p/10753114.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!