编辑代码

// 台阶问题 ( 递归  
const stepRecursive = (n) => {
    
    if (n==1) {
        return 1
    } else if (n==2){
        return 2
    }
    return (stepRecursive(n-1)+ stepRecursive(n-2))

}

// 台阶问题 ( 递推
const stepIterative = (n) => {

    let pps = 1
    let ps = 2
    let result = 0
    for(let i = 3; i <= n; i++){
        result = pps + ps
        pps = ps
        ps = result
    }
    return result

}



//阶乘问题 ( 递归
const factorialRecursive = (n) => {
    
    if (n==0) {
        return 1
    }
    return (fn2(n-1) * n)

}

//阶乘问题 ( 递推
const factorialIterative = (n) => {
    
    if (n==0) {
        return 1
    }
    let result = 1
    for(let i = 1; i <= n; i++){
        result *= i
    }
    return result

}


console.log(factorialIterative(5))

//斐波那契数列 ( 递归
const fibonacciRecursive = (n) => {
    
    if (n==1) {
        return 1
    } else if (n==2){
        return 1
    }
    return (fibonacciRecursive(n-1)+ fibonacciRecursive(n-2))

}

// 斐波那契数列 ( 递推
const fibonacciIterative = (n) => {

    let pps = 1
    let ps = 1
    let result = 0
    for(let i = 3; i <= n; i++){
        result = pps + ps
        pps = ps
        ps = result
    }
    return result

}
console.log(fibonacciIterative(5))

// 回文字符串 ( 递归
const isPalindromeRecursive = (str) => {  

    if (str.length <= 1) {
        return true;
    }
    
    if (str[0] === str[str.length - 1]) {
        return isPalindromeRecursive(str.slice(1, -1));
    } else {
        return false;
    }
}  

console.log(isPalindromeRecursive('ggteeatgg'))

// 回文字符串 ( 递推
const isPalindromeIterative = (str) => {

    let start = 0
    let end = str.length -1
    for(let i = 0; i <= end/2 + 1; i++){
        if (str[start] !== str[end]) {
            return false;
        }
        start++;
        end--;
    }
    return true
}

console.log(isPalindromeIterative('ggtaetgg'))