2015-08-08 201 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

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