2015-08-08 6 views
0

Это вопрос из прошлой статьи. Я делаю экзамен в понедельник, и я жду такого вопроса. Может ли кто-нибудь помочь мне ответить на него?Рассчитать площадь треугольника рекурсивно


Предположим, что вас попросят вычислить площадь треугольника рекурсивно. На рис. III.1 показано компьютеризированное приближение первых пяти фигур. На этом рисунке один квадрат представляет собой одну квадратную единицу. Обратите внимание, что область зависит от ширины треугольника.

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

Рисунок III.1 Компьютеризированное приближение треугольной формы.
a) Каков базовый регистр для рекурсивного вычисления площади?
[1 mark]
b) Выведите рекурсивную формулу для вычисления площади в терминах заданной «ширины».
СОВЕТ. Подумайте о разнице в площади между последовательными значениями «ширина».
[3 балла]


Я уверен, что ответ на части (а):

if(width == 0) 
    return 0; 

Но я понятия не имею, как ответить на часть (б) и в свою очередь, частично (с).

Любая помощь была бы действительно оценена.

+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

Похоже, площадь треугольника с шириной «п» просто: п + (п-1) + (п-2) + ... + 1:

И в псевдокоде:

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

Не будет ли это всегда возвращать 0, так как вы возвращаете 0 каждый раз, когда n равно 0 и когда оно обязательно будет 0? –

+0

Нет. Он вернет n + (n-1) + (n-2) + .... + 1 + 0 –

+0

Да, я плохой, вы правы. –

Смежные вопросы