Например, в следующей схеме:

Список будет выглядеть так:
Код: Выделить всё
R1 -> R2
R1 -> R3
R2 -> R4
R3 -> R4
Рекурсивный алгоритм, который я разрабатываю до сих пор, учитывает вычисление общее сопротивление между двумя любыми резисторами:
Код: Выделить всё
private double calculateResistance(Resistor c1, Resistor c2){
double res = 0;
for(ComponentConnection cc : getGraph()){
if(cc.getFrom().getId() == c1.getId()){
if(cc.getTo().getId() == c2.getId())
return c1.getRes() + c2.getRes();
res += (1/calculateResistance(cc.getTo(),c2));
}
}
return c1.getRes() + 1/res;
}
Проблема в том, что при наличии развилки в схеме алгоритм не может определить момент завершения и дублирует некоторые компоненты (в примере R4 рассматривается дважды).
Проблема в том, что при наличии развилки в схеме алгоритм не может определить момент завершения и дублирует некоторые компоненты (в примере R4 рассматривается дважды).
Проблема в том, что при наличии развилки в схеме алгоритм не может определить момент завершения и дублирует некоторые компоненты (в примере R4 рассматривается дважды).
p>
Есть идеи, как это исправить или решить проблему другим подходом?
Подробнее здесь: https://stackoverflow.com/questions/374 ... cency-list
Мобильная версия