Nalezení rekurze – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Nalezení rekurze – Pascal – Fórum – Programujte.comNalezení rekurze – Pascal – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
sh00ter0
Newbie
26. 11. 2010   #1
-
0
-

Zdravim,

mám takovej problémek, mám napsat program který pro zadané přirozené číslo N vypíše všechny možnosti jak ho zapsat pomocí součtů, s tím, že součty, které se liší jen pořadím čísel jsou považovány za stejné, tzn. například pro N=4 má vypsat

1+1+1+1

1+1+2
1+3
2+2
4

A dá se počítat s tím, že to N bude dostatečně malé ;)

má se to řešit rekurzí ale já jí v tom nemůžu prostě pořádně najít, proto vás nežádám o kód ale jen o myšlenkovej pochod, naprogramovat si to chci zkusit sám.

Děkuju :).

Nahlásit jako SPAM
IP: 94.113.85.–
Reklama
Reklama
KIIV+42
God of flame
26. 11. 2010   #2
-
0
-

no videl bych to na rozklad .. proste budes mit v rekurzi pocitani od 1 a budes to delegovat tak dlouho dokud se to nebude rovnat N
dejme tomu:
1 -> zanoreni 1 -> zanoreni 1 -> zanoreni 1 -> vypis a ukoncit protoze se neda pouzit nic vetsiho..
pak se vratis i jednu uroven vys a tam jeste muzes mit 2
takze 1 1 2
pak zase vys a tam muze byt 1 2 1 + 1 3 ( bude zalezet jestli budes chtit delat rekurzi i pro cisla mensi nez uz mas)

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
sh00ter0
Newbie
29. 11. 2010   #3
-
0
-

Já si nemůžu pomoct, ale pořád mi to nějak nejde :/ vlastne jsem nic moc nevymyslel :/

Nahlásit jako SPAM
IP: 94.113.85.–
liborb
~ Redaktor
+18
Guru
30. 11. 2010   #4
-
0
-

Asi nejlepší je rozepsat si to na papír (třeba pro číslo 6). V podstatě je to tak, že číslo 6 můžeš rozdělit na součet 1+5, 2+4 a 3+3. To jsou základní řešení. Pak samozřejmě můžeš rozložit 5 na součet 1+4 a 2+3 atd. To je ta rekurze ... budeš postupně rozdělovat na jednotlivá součty.

Rekurze je hlavně o podmínce jejího zastavení. Ta je v tomto případě jasná ... 1 už nelze dále dělit.

Tímto způsobem dostaneš rozklad, kde se ti budou možnosti opakovat (s různým pořadím). Vyřadím je tím, že si poneseš informaci o to, na jak malé číslo to ještě můžeš rozdělit. To nejmenší číslo je dané levou stranou (pro 1+5 je to 1, pro 2+4 je to 2 atd.).

No a výpis ... asi si budeš muset pamatovat dosud vytvořené tvary, tj. asi nejlépe přenášet v řetězci (opět jako parametr rekurzivní funkce), kde na začátku je prázdný.

Nahlásit jako SPAM
IP: 78.80.52.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Podobná vlákna

Rekurze — založil NevimCoSemVyplnit

Rekurze — založil johny

Rekurze — založil CML

Nalezení souborů na disku — založil savek

[C#] Nalezení znaku ve stringu — založil MartiniBaby

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý