массивы — рекурсивная функция для LCM в C ++ с использованием нескольких чисел

Пожалуйста, может кто-нибудь помочь мне с рекурсивной функцией найти LCM массива целых.
Вызов функции будет: int LCM(int * arr, int length){}
Пожалуйста, кто-нибудь может мне помочь.

-1

Решение

Вы пометили это как C ++. Вот один из возможных способов сделать это на C ++ с помощью std :: vector.

   class T435_t
{
private:
std::vector<int> iVec;

void show(std::string label)
{
std::cout << label << std::endl;
for (auto iv : iVec)
std::cout << " iVec " << std::setw(6) << iv << std::endl;
std::cout << std::endl;
}

public:

T435_t() // : std::vector<int> iVec - default ctor ok
{
}

~T435_t() {  }

int exec()
{
// test data
iVec.push_back(5);
iVec.push_back(10);
iVec.push_back(15);
iVec.push_back(20);
iVec.push_back(25);

show("\n ----    ---");

int retVal = LCM(1); // start tmp at 1

std::cout << " LCM   " << std::setw(6) << retVal << std::endl;

return(0);
}

private:

inline bool componentOf (int tmp)
{
size_t count = 0;
for (auto iv : iVec)
{
if (0 == (tmp % iv))
++count;  // how many elements of vec are component
}
return (count == iVec.size()); // when all are
}

// recursion
int LCM(int tmp)
{
if (componentOf(tmp)) // recursion termination clause
return (tmp);

return (LCM (++tmp)); // probably tail recursion with -O3
}
};int main(int argc, char* argv[] )
{
std::cout << "argc: " << argc << std::endl;
for (int i=0; i<argc; i+=1) std::cout << argv[i] << " ";
std::cout << std::endl;

setlocale(LC_ALL, "");
std::ios::sync_with_stdio(false);

T435_t t435;  // C++ uses classes!
int retVal = t435.exec();

std::cout << "\nFINI " << std::endl;
return(retVal);
}

Выход:

 ----    ---
iVec      5
iVec     10
iVec     15
iVec     20
iVec     25

LCM      300

Вывод с 5 и 6, закодированными в iVec

----    ---
iVec      5
iVec      6

LCM       30
0

Другие решения

int lcm(int a,int b){

static int temp = 1;

if(temp % b == 0 && temp % a == 0)
return temp;
temp++;
lcm(a,b);

return temp;
}
-1

По вопросам рекламы [email protected]