請有人可以幫助我使用遞歸函數來查找一個整數數組的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. 使用遞歸函數的C中的指數函數
- 5. 遞歸函數中的Pow函數C++
- 6. haskell中的多個遞歸函數
- 7. 一個遞歸函數C++
- 8. 遞歸與多個函數
- 9. 在C中使用遞歸函數#
- 10. 遞歸函數中的兩個函數?
- 11. 遞歸中函數的很多調用
- 12. C++遞歸函數
- 13. 遞歸函數C++
- 14. 函數的遞歸C++
- 15. 多遞歸函數
- 16. 遞歸函數用C
- 17. 使用C中的遞歸在數字中反轉數字
- 18. 遞歸素數函數C++
- 19. 在C++中使用遞歸函數循環使用一個deque
- 20. C++中的GPU加速遞歸函數
- 21. C中的指針和遞歸函數
- 22. C++ - 使用遞歸函數創建金字塔的錯誤
- 23. 在C++中使用遞歸函數來反轉字符串
- 24. 使函數遞歸
- 25. C中的遞歸函數取3到另一個數的冪
- 26. C++ - 字符串流在遞歸函數
- 27. C++使用模板函數調用一個類的遞歸函數
- 28. 使用遞歸函數
- 29. 使用main()函數遞歸
- 30. 使用遞歸函數
是的,他們都將是自然的計數數字。 – user3832668