V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
tedd
V2EX  ›  问与答

请教一个简单的递归问题

  •  
  •   tedd · 2015-11-30 09:47:38 +08:00 · 1409 次点击
    这是一个创建于 3282 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 条回复    2015-11-30 10:11:47 +08:00
    xuxu
        1
    xuxu  
       2015-11-30 09:52:25 +08:00   ❤️ 1
    你这不叫递归 你这只能算调用了 2 次 isEven
    cxe2v
        2
    cxe2v  
       2015-11-30 09:57:34 +08:00   ❤️ 1
    你不 return ,这个方法就是空返回值, undefined
    haiyang416
        3
    haiyang416  
       2015-11-30 09:57:43 +08:00 via Android
    你这函数只有 0 和 1 有返回值,其他的当然是 undefined
    xdazz
        4
    xdazz  
       2015-11-30 10:03:17 +08:00   ❤️ 1
    当前函数的返回值和当前函数内使用的函数的返回值是一回事吗?
    function foo() { return true;}
    function bar() { foo() };
    你能说 bar 就该返回 true 吗?
    dsphper
        5
    dsphper  
       2015-11-30 10:10:39 +08:00
    @xdazz 说的好。
    tedd
        6
    tedd  
    OP
       2015-11-30 10:11:47 +08:00 via iPhone
    @xdazz 原来如此看来还是没有理解透彻递归,谢谢大家!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2707 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:33 · PVG 18:33 · LAX 02:33 · JFK 05:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.