tedd
V2EX  ›  问与答

请教一个简单的递归问题

  •  
  •   tedd · Nov 30, 2015 · 2030 views
    This topic created in 3993 days ago, the information mentioned may be changed or developed.
    function isEven(n) {
      if (n == 0) return true;
      else if (n == 1) return false;
      isEven(n - 2);
    }
    

    这样写的话不会有返回值,得到的结果永远是 undefined ,在 isEven(n-2)前面加个 return 就可以 work 了。
    我的问题是,为什么需要加 return 呢? 如果结果是 0 或者 1 ,不就 return true 或者 false 跳出了吗? 还望指点~感谢!

    6 replies  •  2015-11-30 10:11:47 +08:00
    xuxu
    xuxu
    Nov 30, 2015❤️1
    1
    你这不叫递归 你这只能算调用了 2 次 isEven
    cxe2v
    cxe2v
    Nov 30, 2015❤️1
    2
    你不 return ,这个方法就是空返回值, undefined
    haiyang416
    haiyang416
    Nov 30, 2015 via Android
    3
    你这函数只有 0 和 1 有返回值,其他的当然是 undefined
    xdazz
    xdazz
    Nov 30, 2015❤️1
    4
    当前函数的返回值和当前函数内使用的函数的返回值是一回事吗?
    function foo() { return true;}
    function bar() { foo() };
    你能说 bar 就该返回 true 吗?
    dsphper
    dsphper
    Nov 30, 2015
    5
    @xdazz 说的好。
    tedd
    tedd
    OP
    Nov 30, 2015 via iPhone
    6
    @xdazz 原来如此看来还是没有理解透彻递归,谢谢大家!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5016 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 01:47 · PVG 09:47 · LAX 17:47 · JFK 20:47
    ♥ Do have faith in what you're doing.