2015-08-08 159 views
0

这是以往论文的问题。我在星期一进行考试,我期待着这样的问题出现。任何人都可以帮我解答吗?递归计算三角形面积


假设您被要求递归计算三角形的面积。图三.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)。

任何帮助将非常感激。

+0

看来,后搞砸了我的三角形:/我有一个糟糕的一天。 – PEJC

+1

面积(0)和面积(1)有什么区别?区域(4)和区域(5)之间?区域(n)和区域(n + 1)之间? – Beta

回答

0

所以对于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); 
0

看起来像宽三角形的面积 “N” 仅仅是:N +(N-1)+ (N-2)+ ... + 1:

并以伪代码:

function foo(int n) { 
    if (n == 0) { return 0; } 
    else { return n + foo(n-1); } 
} 
+0

这不会总是返回0,因为每当n为0并且肯定为0时,您都返回0。 –

+0

不会。它会返回n +(n-1)+(n-2)+ .... + 1 + 0 –

+0

是的,我的不好,你是对的。 –