递归与尾递归

function fibonacci2(n, result, preValue) {
            if (n == 0) {
                return result;
            }
            return fibonacci2(n - 1, preValue, result + preValue);
        }
        console.log("使用了尾递归,不会栈溢出", fibonacci2(2, 0, 1));
 
function fibonacci2(n, result, preValue) {
            if(n === 0){
                return result
            }
            return fibonacci2(n-1,preValue,result+preValue)
        }
        console.log(fibonacci2(100,0,1))
        fibonacci2(99,1,1)
        
        fibonacci2(98,1,2)
        fibonacci2(98,2,3)
 
 
 
function fac(n){
            if(n === 1){
                return 1
            }
            return fac(n-1)*n
        }
        console.log(fac(10))
        function fac(n,sum){
            if(n === 1){
                return sum
            }
            return fac(n-1,n*sum)
        }
        console.log(fac(10,1))
        fac(9,10)
        fac(8,10*9)
总结:尾递归,可想而知是逆递归,正常我们10个循环 是从1到10,而尾递归 是从10到1循环,但是循环的规律不变,这样也可以实现,而且还能避免栈溢出
原文地址:https://www.cnblogs.com/MDGE/p/14614620.html