A InfoWiki wikiből
(Változatok közti eltérés)
3. sor: | 3. sor: | ||
<code lang="csharp"> | <code lang="csharp"> | ||
- | Acker(Int,Int) -> Int | + | Acker(Int,Int)->Int |
- | + | Acker(0,j) = j + 1 | |
- | + | Acker(i,0) = Acker(i-1, 1) | |
- | + | Acker(i,j) = Acker(i-1, Acker (i,j-1)) | |
</code> | </code> | ||
- | A függvény | + | A függvény törzse nem többször kerül definiálásra, mindössze mintaillesztés történik.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: | 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"> | <code lang="csharp"> | ||
- | static int Acker(int | + | static int Acker(int i, int j) |
{ | { | ||
- | if ( | + | if (i==0) return j+1; |
- | if ( | + | if (j==0) return Acker(i-1,1); |
- | return Acker( | + | return Acker(i-1, Acker(i,j-1)); |
} | } | ||
</code> | </code> |
A lap 2008. december 8., 21:35-kori változata
TITÁN projekt - Acker fv
Acker(Int,Int)->Int Acker(0,j) = j + 1 Acker(i,0) = Acker(i-1, 1) Acker(i,j) = Acker(i-1, Acker (i,j-1))
A függvény törzse nem többször kerül definiálásra, mindössze mintaillesztés történik.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 i, int j) { if (i==0) return j+1; if (j==0) return Acker(i-1,1); return Acker(i-1, Acker(i,j-1)); }