Řešení rekurze + vysvětlení?

Místo pro témata a příspěvky spadající MIMO počítačovou problematiku (tedy např. sport, zdraví, vtipy, škola...).

Moderátoři: Mods_senior, Mods_junior

Zamčeno
Uživatelský avatar
Widlajz
Level 4
Level 4
Příspěvky: 1086
Registrován: 23 pro 2012 13:49

Řešení rekurze + vysvětlení?

Příspěvek od Widlajz »

Ahoj,

mám menší problém, neumím vyřešit rekurzi v příloze.

Byl by někdo tak ochotný, vypočítal jí + se mi snažil vysvětlit jak došel k výsledku? Děkuji

V úterý píšu zápočtový test, ale neumím si s tím poradit. Ještě jednou děkuji.
Přílohy
rekurze.jpg
AMD Ryzen 5 5600x
MSI B450-A PRO
16GB DDR4 3200MHz
XFX AMD RADEON RX 6700 XT
EVGA GQ 750
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7414
Registrován: 23 pro 2010 09:23

Re: Řešení rekurze + vysvětlení?

Příspěvek od faraon »

No fuj, to je husný struktogram. Tak právě proto mám radši klasické vývojové diagramy :lol:

Takže zavoláš proceduru Jonatán, a ta načte číslo ze vstupu do proměnné A. Pokud je to nula, vypíše jí na výstup, načte další číslo které také vypíše na výstup (vlastně ho vyhodí z fronty) a ukončí se, takže se program vrátí tam, odkud jsi Jonatána volal. To může být buď hlavní program nebo předchozí Jonatán!
Jenže pokud to nula není, tak se načte další číslo a testuje, jestli je menší než 6. Pokud ano, vypíše se na výstup, potom se zavolá další Jonatán, a až skončí, to číslo se znovu vypíše na výstup a Jonatán skončí. Nezapomeň že každý Jonatán má vlastní proměnnou A, takže ten předchozí si stále pamatuje to co tam bylo načtené.
Ale když to číslo není menší než 6, tak se úplně ignoruje, rovnou se zavolá další Jonatán, a po jeho skončení se načte a vypíše další číslo v pořadí, čili se také vyhodí z fronty bez nějakého testování. Potom tenhle Jonatán skončí.

Máš to řešit v nějakém konkrétním jazyce nebo obecně, a procházíš to jen ručně?
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
Widlajz
Level 4
Level 4
Příspěvky: 1086
Registrován: 23 pro 2012 13:49

Re: Řešení rekurze + vysvětlení?

Příspěvek od Widlajz »

Ahoj,

díky za menší vysvětlení, cca. ten postup chápu. Řeším to obecně co prostě tenhle strukturogram vypíše na výstupu a procházím to pouze ručně.
Můžeš, to prosím tě zkusit vypočítat co vyjde na výstupu? Podle mého výpočtu, to nevychází, když se podívám do řešení.

Není mi zrovna jasné to, co se děje, když je A=0 tak jí vypíšu a následně místo tý nuly do "zásobníku" přepíšu dalším číslem? Tady ty rekurze s tím, PIŠ A na prvním místem a následném ČTI A mi dělají problém.
AMD Ryzen 5 5600x
MSI B450-A PRO
16GB DDR4 3200MHz
XFX AMD RADEON RX 6700 XT
EVGA GQ 750
Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7414
Registrován: 23 pro 2010 09:23

Re: Řešení rekurze + vysvětlení?

Příspěvek od faraon »

Když načteš do A další hodnotu, tak se prostě ta předchozí ztratí. Ale pouze ta lokální, v každém zavolání Jonatána, a ty předchozí zůstanou beze změny. Udělej si tabulku se sloupcem pro každé vnoření, a zapisuj si stav:

Kód: Vybrat vše

vstup| A1 | A2 | A3 | A4 | A5 | A6 |
  6  |  6 |    |    |    |    |    | =0 ne
  1  |  1 |    |    |    |    |    | <6 ano
  5  |    |  5 |    |    |    |    | =0 ne
  3  |    |  3 |    |    |    |    | <6 ano
  7  |    |    |  7 |    |    |    | =0 ne
  8  |    |    |  8 |    |    |    | <6 ne
  8  |    |    |    |  8 |    |    |
A tak dále, těch vnoření je při téhle sekvenci šest a poslední čtyři čísla na vstupu zůstanou nevyužita. Mohl bys tam také přidat ještě sloupec pro výstup, abys poznal ve kterém okamžiku se obsah A vypíše, první polovina výstupu bude vypadat takhle:
1 3 0 2 0 7 . . . . .

Možná by stálo za to překreslit ten sktruktogram do vývojového diagramu, třeba by se ti v něm lépe orientovalo. On už ten název "flowchart" trochu napovídá o čem v tom jde ;-)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)
Uživatelský avatar
Widlajz
Level 4
Level 4
Příspěvky: 1086
Registrován: 23 pro 2012 13:49

Re: Řešení rekurze + vysvětlení?

Příspěvek od Widlajz »

Díky, vypadá to, že mi to kamarád vysvětlil dostatečně a nemám problém to vypočítat.

Díky ještě jednou.
AMD Ryzen 5 5600x
MSI B450-A PRO
16GB DDR4 3200MHz
XFX AMD RADEON RX 6700 XT
EVGA GQ 750
Zamčeno
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek

Zpět na „Vše ostatní (Off topic)“