Вы вычисляете sqrt ((1-2) ^ 2 + sqrt ((2-5) ^ 2 + sqrt ((3-8) ^ 2))), вы можете сделать несколько простых «исправлений» в вашей логике с помощьювозведение в квадрат рекурсивного результата один раз
double findRSS(int* array1, int* array2, int size){
double sum = 0;
if (size <= 0){
return 0; }
else{
sum = pow((array1[size-1] - array2[size-1]), 2);
sum = sum + pow(findRSS(array1, array2, size-1), 2); // you are undoing sqrt for new one
}
return sqrt(sum);
}
, но, как вы можете видеть, метод имеет недостатки. Это хороший пример того, почему структурированная разработка важна. Вы можете найти принципы, найденные разработчиками, которые хорошо постарели, здесь: http://www.catb.org/~esr/writings/taoup/html/ch01s06.html
, поэтому ваши методы станут примерно такими:
double diffSum(int* array1, int* array2, int size, int power) {
double sum = 0;
if (size <= 0) {
return 0;
}
else {
sum = pow((array1[size - 1] - array2[size - 1]), power);
sum = sum + diffSum(array1, array2, size - 1, power);
}
return sum;
}
double findRSS(int* array1, int* array2, int size) {
return sqrt(diffSum(array1, array2, size, 2));
}
ключ к успеху - это когда вам нужно разойтись;Осторожно, методы хранения с меньшим количеством строк помогают поддерживать код