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