优点:代码简短清晰
缺点:可能会栈溢出,如果没使用尾递归优化的话, 以及 性能不用递归实现一般而言会差一点
而之所以简短清晰有个很重要的原因是,不适用递归,一般要使用栈,而递归中调用栈正好就充当了栈的角色,从而有这个优点,而栈是有确定的大小的,每次递归都会创建一个栈帧,容易栈溢出,同时由于有方法调用,包含栈帧创建等事情所以效率比起自己实现相对会差一点。
递归缺点和是否是Java 关系不大, 递归的缺点在于:
递归太深的话, 资源不够, 或者直接栈溢出;
系统在每次递归前都要保护现场, 资源占用比其他调用高很多;
可读性可能很好, 可能很差, 差到不得不debug才能看清逻辑;
递归在时间和资源上的占用可能是未知的, 因此使用前应给定评估, 并给定适当的跳出保护避免crash
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。