两次使用时递归如何工作?

时间:2015-06-25 16:04:47

标签: recursion

int func(a,b,c){
    if(a==b)
        return; 
    func(a,c,b); // <-- 1
    func(a,b,c); // <-- 2
}

我使用递归函数。我想知道递归1和2如何工作?这意味着当第二次递归开始工作时,它们之间是如何发生交互的?

2 个答案:

答案 0 :(得分:1)

如果没有示例输入值,就不可能知道结果是什么。

  • FUNC(3,3,5); //将直接返回(a == b)
  • FUNC(1,2,3); //会导致无限循环(a!= b!= c)
  • FUNC(3,2,3); //会重复一次(a == c)
然后

func 一个递归,因为它自己调用(func()调用func())。

但是它有很大的问题,因为它可以很容易地循环。

除非可以证明它是有限循环,否则正确的递归函数也会计算其递归并退出任意高数。

答案 1 :(得分:0)

呼叫#2永远不会被执行。调用#1将始终调用新函数创建新范围并逐行执行,直到它到达调用#1并且该过程再次开始。