LINUX.ORG.RU

История изменений

Исправление beastie, (текущая версия) :

Вопрос скорее, правильный ли подход, а записать то не проблема.

#define EPS 1e-6

float
area(float alpha)
{
    /* ... */
}

float
find_alpha(float start) {
    float a1 = area(start + start/2);
    float a2 = area(start - start/2);

    if (abs(a1 - a2) < EPS)
        return start;
    else if (a1 < a2)
        return find_alpha(a1);
    else
        return find_alpha(a2);
}

Как-то так, если ничего не путаю.

Исходная версия beastie, :

Вопрос скорее, правильный ли подход, а записать то не проблема.

#define EPS 1e-6

float
area(float alpha)
{
    /* ... */
}

float
find_alpha(float start) {
    float a1 = area(start + start/2);
    float a2 = area(start - start/2);

    if (abs(a1 - a2) < EPS)
        return start;
    else if (a1 < a2)
        return find_alpha(a1);
    else
        return find_alpha(a2);
}

Как-то так, если ничего не путаю.