请教一个简单的递归问题

2015-11-30 09:47:38 +08:00
 tedd
```javascript
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 跳出了吗? 还望指点~感谢!
1358 次点击
所在节点    问与答
6 条回复
xuxu
2015-11-30 09:52:25 +08:00
你这不叫递归 你这只能算调用了 2 次 isEven
cxe2v
2015-11-30 09:57:34 +08:00
你不 return ,这个方法就是空返回值, undefined
haiyang416
2015-11-30 09:57:43 +08:00
你这函数只有 0 和 1 有返回值,其他的当然是 undefined
xdazz
2015-11-30 10:03:17 +08:00
当前函数的返回值和当前函数内使用的函数的返回值是一回事吗?
function foo() { return true;}
function bar() { foo() };
你能说 bar 就该返回 true 吗?
dsphper
2015-11-30 10:10:39 +08:00
@xdazz 说的好。
tedd
2015-11-30 10:11:47 +08:00
@xdazz 原来如此看来还是没有理解透彻递归,谢谢大家!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/239919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX