tedd
V2EX  ›  问与答

请教一个简单的递归问题

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