递归计算三角形面积

时间:2015-08-08 23:05:43

标签: recursion area

这是过去一篇论文中的一个问题。我星期一正在做考试,我期待这样的问题出现。有人可以帮我回答吗?

假设您被要求递归计算三角形的面积。图III.1显示 前五个形状的计算机化近似。在该图中,一个正方形表示一个方形单位。请注意,该区域取决于三角形的宽度。

                                          []
                               []        [][]
                     []       [][]      [][][]      Figure III.1
           []       [][]     [][][]    [][][][]
  []      [][]     [][][]   [][][][]  [][][][][]
width=1  width=2   width=3   width=4    width=5

图III.1三角形的计算机近似。
a)递归计算区域的基本情况是什么?
[1分]
b)导出递归公式,以给定的“宽度”计算面积  提示:考虑连续“宽度”值之间的区域差异 [3分]

我很确定(a)部分的答案是:

if(width == 0)  
    return 0;  

但我不知道如何回答(b)部分和(c)部分。

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

因此,对于每个单位,你的宽度会逐渐减小,直到达到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);

答案 1 :(得分:0)

看起来像三角形的宽度为" n"只是:n +(n-1)+(n-2)+ ... + 1:

在伪代码中:

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