A InfoWiki wikiből
(Változatok közti eltérés)
(Új oldal, tartalma: „__NOTOC__ {{page_addr|TITÁN projekt - Acker fv}} <code lang="csharp"> result = Acker(3,7) Acker(Int,Int) -> Int | 0, j = j + 1 | i, 0 = Acker(i-1, 1) | i, j = Acker(...”) |
|||
3. sor: | 3. sor: | ||
<code lang="csharp"> | <code lang="csharp"> | ||
- | |||
- | |||
Acker(Int,Int) -> Int | Acker(Int,Int) -> Int | ||
| 0, j = j + 1 | | 0, j = j + 1 | ||
| i, 0 = Acker(i-1, 1) | | i, 0 = Acker(i-1, 1) | ||
- | | i, j = Acker(i-1, Acker (i,j-1)) | + | | i,j = Acker(i-1, Acker (i,j-1)) |
+ | </code> | ||
+ | |||
+ | A függvény kódjában a '''|''' vonal a mintaillesztést szimbolizálja. A fordítónak figyelnie kell, hogy minden minta-kombinációra van-e törzs kidolgozva. | ||
+ | |||
+ | A minta (pattern) illesztésénél a lehetséges input paraméterek lehetséges értékeire adunk más-más viselkedésű függvény-törzseket. A fenti Acker-függvény C# változata az alábbi lehetne: | ||
+ | |||
+ | <code lang="csharp"> | ||
+ | static int Acker(int a, int b) | ||
+ | { | ||
+ | if (a==0) return b+1; | ||
+ | if (b=0) return Acker(a-1,1); | ||
+ | return Acker(a-1, Acker(a,b-1)); | ||
+ | } | ||
</code> | </code> |
A lap 2008. december 8., 21:22-kori változata
TITÁN projekt - Acker fv
Acker(Int,Int) -> Int | 0, j = j + 1 | i, 0 = Acker(i-1, 1) | i,j = Acker(i-1, Acker (i,j-1))
A függvény kódjában a | vonal a mintaillesztést szimbolizálja. A fordítónak figyelnie kell, hogy minden minta-kombinációra van-e törzs kidolgozva.
A minta (pattern) illesztésénél a lehetséges input paraméterek lehetséges értékeire adunk más-más viselkedésű függvény-törzseket. A fenti Acker-függvény C# változata az alábbi lehetne:
static int Acker(int a, int b) { if (a==0) return b+1; if (b=0) return Acker(a-1,1); return Acker(a-1, Acker(a,b-1)); }