JavaScript神奇递归法入门的三项须知

Recursion是编程思想中最令人兴奋的部分.

一、Recursion递归的第一原则Base-Case

Base-Case又名Terminating-Case,比如倒数到N:

function countToN(n) {
    if (n < 0) {
        return;
    }
    else {
        console.log(n);
        countToN(n - 1);
    }
}

countToN(11);


二、Recursion的第二原则Divide-and-Conquer

最著名的案例就是fibonacci数列:

function fib(n) {
    if (n < 1) {
        return n;
    }
    let b = 1;
    let a = 0;
    for (let i = 1; i < n; i++) {
        sum = a + b;
        a = b;
        b = sum;
    }
    return sum;
}

console.log(fib(11));

将其改写为Recursion 的写法:

function betterFib(b, a, n) {
    if (n == 0) {
        return a;
    }
    else if (n == 1) {
        return b;
    }
    else {
        return betterFib(b + a, b, n - 1);
    }
}

console.log(betterFib(1, 0, 11));


三、再来实现一个帕斯卡三角:

应用上面的 base-case 与pide-and-conqure 的思路实现帕斯卡三角:

function pascalTriangle(row, col) {
  if (col == 0) {
    return 1;
  } else if (row == 0) {
    return 0;
  } else {
    return pascalTriangle(row - 1, col) + pascalTriangle(row - 1, col - 1);
  }
}
console.log(pascalTriangle(11, 9)); /// 55
  

四、总结

Recursion就是base-case(terminating-case)加上pide-and-conqure.

展开阅读全文

页面更新:2024-05-04

标签:递归   数列   写法   又名   最著名   须知   入门   思路   兴奋   神奇   原则   案例   思想   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top