Bitte kann mir jemand mit der rekursiven Funktion helfen, den LCM eines Arrays von Ints zu finden. Der Funktionsaufruf lautet: int LCM(int * arr, int length){}
Bitte kann mir jemand helfen.Rekursive Funktion für LCM in C++ mit mehreren Zahlen
Antwort
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;
}
Wie würde ich das dann konvertieren, so dass es ein Array von Ints akzeptieren wird, wo ein ist? – user3832668
Sie haben dies als C++ markiert. Hier ist ein möglicher C++ - Weg, wie man das macht, mit 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);
}
Ausgang:
---- ---
iVec 5
iVec 10
iVec 15
iVec 20
iVec 25
LCM 300
Ausgang mit 5 und 6 codiert in Ivec
---- ---
iVec 5
iVec 6
LCM 30
Beachten Sie, wie die Verwendung von Vektor den Code vereinfacht ... Zählen und Index einfügen alles für Sie erledigt. –
Beachten Sie, wie die Verwendung von Vektor und "for (auto iv: iVec)" das Scannen der Inhalte von iVec sowohl für "show()" als auch für die Methode "componentOf()" vereinfacht. –
Beachten Sie, wie der rekursive Code "LCM()" vollen Zugriff auf ein beliebiges Datenattribut der Klasse hat ... zum Beispiel musste ich das 'array' ptr und die Länge durch die Rekursion nicht übergeben, LCM() hat einfach auf Instanzen iVec. Ich musste auch nicht 'tmp' durch die Rekursion gehen, aber ich dachte, es sah besser aus. –
- 1. lcm aller Zahlen in einem Array in C++
- 2. C++: rekursive Funktion für Array
- 3. Rekursive Template-Funktion mit mehreren Typen
- 4. Fehler beim Suchen LCM in Javascript mit größeren Zahlen
- 5. LCM von 2 langen langen ganzen Zahlen
- 6. berechnen LCM von 2 Zahlen Vorlagen
- 7. Suche nach der LCM einer Reihe von Zahlen
- 8. unendliche Menü rekursive Funktion C#
- 9. Berechnen Sie die LCM einer Liste von Zahlen in Python
- 10. C++ Rekursive Funktion Infinite Loop
- 11. Rekursive Permutation mit mehreren Listen
- 12. GPU beschleunigt rekursive Funktion in C++
- 13. LCM und GCD funktioniert nicht
- 14. Rekursive Funktion für symmetrische Differenz
- 15. Rekursive Funktion in Minesweeper
- 16. rekursive Funktion für Floor Division
- 17. Konvertieren String mit mehreren Zahlen in ganze Zahlen
- 18. rekursive Funktion funktioniert nicht für CheckLink Funktion
- 19. in rekursive Funktion, Reaktion
- 20. Rekursive Funktion Python
- 21. rekursive binäre Suche in C++ mit einer Bool-Funktion
- 22. Haskell - Versuche, eine Funktion auf Zeilen mit mehreren Zahlen anzuwenden
- 23. Rand() Zahlen in Funktion in C
- 24. Rekursive Funktion ohne Schleife
- 25. rekursive Funktion in CakePHP
- 26. Rekursive Backtracking in C++
- 27. C rekursive Funktion nicht return true
- 28. C#: rekursive Funktionen mit Lambdas
- 29. Schwierigkeit LISP rekursive Funktion für Merge Sort
- 30. Stapelgrößenbemaßung durch rekursive Funktion
Ja, sie werden alle natürlichen natürlichen Zahlen sein. – user3832668