递归算法可以函数里出现多个分支吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
最简单的递归是函数直接调用了自己: void Func()
{
// ......
Func();
// ......
}
稍复杂的递归可以是多个函数互相调用形成的间接递归: void FuncA()
{
// ......
FuncB();
// ......
}
void FuncB()
{
// ......
FuncA();
// ......
}
也就是说, 只要函数调用了自己, 无论是直接还是间接, 都算递归. 说它们都是递归倒不是因为教科书上的"定义", 而是递归编程需要关心终止条件, 无限递归会导致线程锁死和栈溢出等问题. 至于题主所问是否可以分支, 当然是可以的, 递归是解决问题的方法, 是编程技巧, 递归函数本身与其他函数并无本质区别.