递归计算三角形面积
这是以往论文的问题。我在星期一进行考试,我期待着这样的问题出现。任何人都可以帮我解答吗?递归计算三角形面积
假设您被要求递归计算三角形的面积。图三.1显示了前五种形状的计算机近似。在这个图中,一个正方形代表一个平方单位。请注意,该区域取决于三角形的宽度。
[]
[] [][]
[] [][] [][][] Figure III.1
[] [][] [][][] [][][][]
[] [][] [][][] [][][][] [][][][][]
width=1 width=2 width=3 width=4 width=5
图III.1计算机化的三角形近似。
a)该区域的递归计算的基本情况是什么?
[1 mark]
b)根据给定的“宽度”推导递归公式以计算面积。
建议:考虑连续“宽度”值之间的区域差异。
[3标记〕
我敢肯定的答案(a)部分为:
if(width == 0)
return 0;
但我不知道怎么回答(b)部分,进而部分( C)。
任何帮助将非常感激。
所以对于witdh的每一个单位你有你的宽度逐个减少,直至达到0
嗯,这不是测试,但它应该是这样的,我相信。
int CalculateArea(int width, int area)
{
if(width == 0)
return area;
area = area + width;
return CalculateArea(width - 1, area);
}
当你调用该函数不要忘了给区0第一
int Width = 5;
int area = CalculateArea(Width, 0);
看起来像宽三角形的面积 “N” 仅仅是:N +(N-1)+ (N-2)+ ... + 1:
并以伪代码:
function foo(int n) {
if (n == 0) { return 0; }
else { return n + foo(n-1); }
}
这不会总是返回0,因为每当n为0并且肯定为0时,您都返回0。 –
不会。它会返回n +(n-1)+(n-2)+ .... + 1 + 0 –
是的,我的不好,你是对的。 –
看来,后搞砸了我的三角形:/我有一个糟糕的一天。 – PEJC
面积(0)和面积(1)有什么区别?区域(4)和区域(5)之间?区域(n)和区域(n + 1)之间? – Beta