水平遍歷和嵌套遞歸

程序中存在着一些有意思的邏輯,好比多層嵌套能夠用遞歸遍歷,好比同層的if else能夠用數組遍歷。數組

下面舉例說明,多層嵌套的if else想要遞歸遍歷須要寫成下面的形式,以及用特定形式的遞歸遍歷:函數

多層嵌套的if else轉寫成的函數blog

 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改寫的函數以及遍歷方法string

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();

  以上,總結的有意思的邏輯,也是能夠簡化代碼的方法。這樣的邏輯還有不少………………io

相關文章
相關標籤/搜索