C++ 如何跟踪调用自身的函数的流程?

C++ 如何跟踪调用自身的函数的流程?,c++,math,recursion,C++,Math,Recursion,嗯,这是另一个从这次练习考试中提出来的问题,我不知道该怎么办 int fun5 (int c, int d) { if (c <= d) { return c; } else { return fun5(c-d, d) * c; } } intfun5(intc,intd){ 如果(c让我们追踪一下,看看会发生什么 调用fun5(9,3)将返回 fun5(9, 3) = fun5(9 - 3, 3) * 3 = fun5(6,

嗯,这是另一个从这次练习考试中提出来的问题,我不知道该怎么办

int fun5 (int c, int d) {
    if (c <= d) {
        return c;
    } else {
        return fun5(c-d, d) * c;
    }
}
intfun5(intc,intd){

如果(c让我们追踪一下,看看会发生什么

调用
fun5(9,3)
将返回

  fun5(9, 3)
= fun5(9 - 3, 3) * 3
= fun5(6, 3) * 9
嗯,我们有

  fun5(6, 3)
= fun5(3, 3) * 6
然后

这意味着

  fun5(6, 3)
= fun5(3, 3) * 6
= 3 * 6
= 18
  fun5(9, 3)
= fun5(6, 3) * 9
= 18 * 9
= 162
这意味着

  fun5(6, 3)
= fun5(3, 3) * 6
= 3 * 6
= 18
  fun5(9, 3)
= fun5(6, 3) * 9
= 18 * 9
= 162
这就是你的答案的来源


希望这能有所帮助!

让我们追踪一下,看看会发生什么

调用
fun5(9,3)
将返回

  fun5(9, 3)
= fun5(9 - 3, 3) * 3
= fun5(6, 3) * 9
嗯,我们有

  fun5(6, 3)
= fun5(3, 3) * 6
然后

这意味着

  fun5(6, 3)
= fun5(3, 3) * 6
= 3 * 6
= 18
  fun5(9, 3)
= fun5(6, 3) * 9
= 18 * 9
= 162
这意味着

  fun5(6, 3)
= fun5(3, 3) * 6
= 3 * 6
= 18
  fun5(9, 3)
= fun5(6, 3) * 9
= 18 * 9
= 162
这就是你的答案的来源

希望这有帮助!

这是递归

第一次c=9,d=3,那么你做else语句:(下面用数字替换)

然后你用c=6和d=3做下一步,所以你再做一次else

return fun5(6-3, 3) * 6;
然后你用c=3和d=3做下一个,所以你做if

return 3;
沿着你得到的那一堆来

return 3;
return 3 * 6;
return 18 * 9;
最终返回值是18*9或162。

它是递归

第一次c=9,d=3,那么你做else语句:(下面用数字替换)

然后你用c=6和d=3做下一步,所以你再做一次else

return fun5(6-3, 3) * 6;
然后你用c=3和d=3做下一个,所以你做if

return 3;
沿着你得到的那一堆来

return 3;
return 3 * 6;
return 18 * 9;

最终返回值是18*9或162。

哦,你要继续往下读。我不知道。我想我得读一点递归。非常感谢!哦,你要继续往下读。我不知道。我想我要继续往下读一点递归。非常感谢!连同吐温的答案,这确实有帮助。谢谢!连同吐温的答案,这确实有帮助。谢谢