如何画一个方法的分解和组合?
How to draw a decomposition and composition for a method?
考虑以下代码片段
public int fun(int a, int b) {
if (b == 1)
return a;
else
return a + fun(a, b - 1);
}
一个。画出fun(2,4)
的分解&组合
b。 fun(2,0) 的值是多少?讨论并展示证明您的答案的屏幕截图。
here is the screenshot
a. Draw the decomposition & composition of fun(2,4)
你的问题听起来像是家庭作业,我不想为你做这项工作。
也就是说,我可以画 decomposition/composition 图作为另一个例子给你一个想法。
这是 fun(0,3)
的图表:
其中黑色箭头表示分解,蓝色箭头表示 fun(0,3)
.
的组成
分解程序(black):
绘制fun(0, 3)
通过检查你的代码,你可以看到为了计算 fun(0, 3)
,你首先必须计算 fun(0, 2)
,所以你绘制 fun(0, 2)
为了计算fun(0, 2)
,你首先要计算fun(0, 1)
,所以你画出fun(0, 1)
合成程序(blue):
fun(0, 1)
returns a
,或者你的情况 0
您现在可以计算 fun(0, 2) = a + fun(0, 1) = 0 + 0 = 0
最后,您可以计算 fun(0, 3) = a + fun(0, 2) = 0 + 0 = 0
b. What would be the value of fun(2,0)?Discuss and show a screenshot
that proves your answer.
如您所见,该特定情况会产生 Whosebug
错误。如果您尝试为这种情况绘制 decomposition/composition 图,您最终会得到一个单一的、无尽的分支。
考虑以下代码片段
public int fun(int a, int b) {
if (b == 1)
return a;
else
return a + fun(a, b - 1);
}
一个。画出fun(2,4)
的分解&组合b。 fun(2,0) 的值是多少?讨论并展示证明您的答案的屏幕截图。
here is the screenshot
a. Draw the decomposition & composition of fun(2,4)
你的问题听起来像是家庭作业,我不想为你做这项工作。
也就是说,我可以画 decomposition/composition 图作为另一个例子给你一个想法。
这是 fun(0,3)
的图表:
其中黑色箭头表示分解,蓝色箭头表示 fun(0,3)
.
分解程序(black):
绘制
fun(0, 3)
通过检查你的代码,你可以看到为了计算
fun(0, 3)
,你首先必须计算fun(0, 2)
,所以你绘制fun(0, 2)
为了计算
fun(0, 2)
,你首先要计算fun(0, 1)
,所以你画出fun(0, 1)
合成程序(blue):
fun(0, 1)
returnsa
,或者你的情况0
您现在可以计算
fun(0, 2) = a + fun(0, 1) = 0 + 0 = 0
最后,您可以计算
fun(0, 3) = a + fun(0, 2) = 0 + 0 = 0
b. What would be the value of fun(2,0)?Discuss and show a screenshot that proves your answer.
如您所见,该特定情况会产生 Whosebug
错误。如果您尝试为这种情况绘制 decomposition/composition 图,您最终会得到一个单一的、无尽的分支。