请有人可以帮助我使用递归函数来查找一个整数数组的LCM。 函数调用将是:int LCM(int * arr, int length){}
请有人可以帮助我。C++中使用多个数字的LCM的递归函数
回答
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;
}
我将如何转换这个,以便它将接受一个int数组,其中a是? – user3832668
您已将此标记为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
注意矢量的使用如何简化代码......计数和插入索引都是为你照顾的。 –
请注意,对于“show()”和方法“componentOf()”,向量和“for(auto iv:iVec)”的使用简化了iVec内容的扫描。 –
请注意递归代码“LCM()”如何完全访问类的任何数据属性...例如,我不需要通过递归传递'array'ptr和长度,LCM()只需访问实例iVec。我也不需要通过递归传递'tmp',但我认为它看起来更熟悉它。 –
- 1. C++多重递归函数
- 2. C中的递归函数#
- 3. 使用递归函数的C中的指数函数
- 4. 递归函数中的Pow函数C++
- 5. 一个递归函数C++
- 6. 递归与多个函数
- 7. 递归函数中的两个函数?
- 8. 递归函数C++
- 9. C++递归函数
- 10. 递归素数函数C++
- 11. C++ - 使用递归函数创建金字塔的错误
- 12. C中的指针和递归函数
- 13. 使函数递归
- 14. C中的递归函数取3到另一个数的幂
- 15. C++使用模板函数调用一个类的递归函数
- 16. 使用递归函数
- 17. 使用递归函数itertools
- 18. 使用递归函数
- 19. 使用递归函数
- 20. Sum函数使用递归和多个参数
- 21. 大量函数递归 - C++
- 22. 无效函数C递归
- 23. C递归函数 - GCD
- 24. 在递归函数[C]
- 25. 递归在C++函数
- 26. C蛮力递归函数
- 27. 数字的递归函数总和R
- 28. 添加数字使用递归在C
- 29. 的递归函数
- 30. 在递归函数中返回并使用多个树结构
是的,他们都将是自然的计数数字。 – user3832668