Продолжение решения дробей

Вот что я до сих пор думал, что работает для 2 элементов в массиве. элементы массива — это переменные, которые нужно подставить в непрерывную дробь.

double continuedFraction(int a[], int size)
{
    double fraction = a[0];

    for(int i = 1; i < size; i++)
    { 
        fraction += (double)1/(double)a[i];
    }

    return fraction;
}

Кстати, я не использую рекурсию, мне нужно иметь возможность получить результат непрерывной дроби.


person What    schedule 08.05.2014    source источник
comment
Я уверен, что это не должно быть слишком сложно, я действительно не могу это представить. Я очень ценю чье-либо руководство.   -  person What    schedule 09.05.2014


Ответы (1)


Для первой итерации вы получите (a0 + 1/a1). В дальнейших итерациях ваш код продолжает добавлять обратное заданному числу, которое равно (a0 + 1/a1) + (1/a2) + (1/a3) +...

В идеале вам нужно +... 1/(a2 + 1/(a1 + 1/a0))...)

double continuedFraction(int a[], int size)
{
    double fraction = a[0];

    for(int i = 1; i < size; i++)
    { 
        fraction = a[i] + (1/fraction);
    }

    return fraction;
}

Если вы хотите наоборот, a0 + 1/(a1 + 1/(a2 + 1/a3 + ... ))...) вы можете запустить цикл от array_size-1 до 0

person Ramya Maithreyi    schedule 08.05.2014
comment
Спасибо! ты просветил меня сейчас, я думаю об этом, все указывает на тебя всякий раз, когда у меня есть шанс, я люблю тебя - person What; 09.05.2014