Euklidészi algoritmusban hogyan lehet átírni, ha megvan a pszeudo? (C#)
Nemrég kezdtem programozni, az egyik érettségiben megakadtam. Ezt az algoritmust kéne átírnom egy függvénybe.
"Függvény lnko(a, b : egész számok) : egész szám
ha a=b akkor lnko := a
ha a<b akkor lnko := lnko(a, b-a)
ha a>b akkor lnko := lnko(a-b, b)
Függvény vége"
Azzal nincs gondom, amikor 1 értékkel kell visszatérni de ilyennel még nem találkoztam, hogy 2-vel kéne. Valaki tudna ebben segíteni?
Előre is köszönöm !
Hogy érted, hogy 2-vel kéne? Itt is csak egy értékkel tér vissza. Csak a<b illetve a>b esetben rekurzívan meghívja saját magát.
Egyébként, ha mindenáron 2 értékkel akarsz visszatérni, akkor hozz létre egy rekord típust vagy osztályt, vagy C#-ban lehet vannak ilyen kidolgozott dolgok, hogy Pair, vagy ilyesmi. Vagy ami a legegyszerűbb: tömb.
A C# szintaxisát kell használnod.
A C# a visszatérési értéket a függvény előtt jelzi. Az egész szám jele: int
Ezután a függvény neve, majd zárójelben a paraméterek.
A függvény törzse kapcsos zárójelben van. Miután kitetted őket, törölheted a függvény-függvény vége szavakat.
Összehasonlításokban = helyett az ==-t használja. Erre később is figyelned kell majd. A := helyett =-t használ.
A feltételeket tedd zárójelbe, különben csak hibaüzeneteket kaphatsz.
A ha szavak helyett írj if-eket, és az akkor-okat törölheted.
A bezáró zárójel elé írd ki, hogy return lnko, különben csak nézel, hogy hol hol a hiba.
Készen is van.
Ahogy azt írták előttem is, nincs több visszatérési érték, ez egy rekurzív függvény
class Program
{
static void Main(string[] args)
{
Console.WriteLine(lnko(128, 56));
Console.Read();
}
public static int lnko(int a, int b)
{
if (a == b)
return a;
else if (a < b)
return lnko(a, b - a);
else
return lnko(a - b, b);
}
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!