Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Najväčší možný delitel pomcou rekurzie

V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jakub Sobinovsky:12.6.2017 21:43

Čaute, chcel by som sa spýtať či je toto správne riešenie na najväčšieho možného delitela pomocou rekurzie.Poprípade ak máte nápad ako to spraviť inak kludne to napíšte :)

#include <iostream>
using namespace std;

int cislo = 6;
int vysledok;
int najvacsi_MoznyDelitel(int x)
{
   vysledok = cislo % x;
   if((vysledok == 0) && (cislo != x))
   {
     cout << "Najvacsi nasobok cisla: " << cislo << " je: ";
     return x;
   }
   else
   return najvacsi_MoznyDelitel(x - 1);
}

int main(void) {

cout << najvacsi_MoznyDelitel(6) << endl;
        return 0;
}
Editováno 12.6.2017 21:43
 
Odpovědět
12.6.2017 21:43
Avatar
Jakub Šilhavý:13.6.2017 22:19

Nejvyšší možný dělitel čísla n z množiny přirozených čísel N je vždycky n :D, ale pokud bych měl sestavit algoritmus pro výpočet druhého nejvyššího dělitele čísla n, tak bych to upravil asi takto:

U sudých čísel (2n) je to vždycky n/2, a u lichých (2n-1) můžeš ten algoritmus spustit od hodnoty n/2 :). U velkých čísel tak ušetříš několik zbytečných kroků. Samozřejmě tenhle algoritmus se dá použít pro čísla n>1 (nulou dělit nelze).

#include <iostream>

int ND(int num, int n) {
    if  (num % n == 0)
        return n;
    return ND(num, n-1);
}

int main() {
    int num = 4569;
    if (num > 1) {
        if (num % 2 == 0)
            std::cout << num/2 << std::endl;
        else std::cout << ND(num, num/2) << std::endl;
    }
    return 0;
}

Snad se nepletu :).

Nahoru Odpovědět
13.6.2017 22:19
Život je pes, a proto žít je psina.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.