Operativsystem: .............................................................
Operativsystem: .............................................................
Operativsystem: .............................................................
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Som det ses arbejder modificer() nu kun med en kopi af strengen!<br />
De indbyggede C# typer som int, byte, char og string er implicit value parametre. Det er altså<br />
nødvendigt at brug ref hvis en metode skal arbejde med selve variablen (referencen). Hvis ref<br />
bruges arbejder metoden med den samme adresse i RAM (i heap’en hvor alle ref objekter<br />
gemmes) som variablen ligger på. Parameteren er en ’pointer’.<br />
Som vi siden skal se er klasser implicit ref parametre. Hvis vi har skrveet en klasse Hus og en<br />
metode som tager et hus som parameter – opfattes parameteren som en ref parameter automatisk.<br />
Metoden ændrer altså i selve objektet hus. Årsagen er at klassen Hus er en reference type, mens int<br />
er en value type!<br />
Rekursive funktioner/metoder:<br />
Der er skrevet tykke bøger om ’rekursive’ funktioner dvs funktioner der kalder sig selv. Rekursive<br />
funktioner bliver brugt i mange forskellige sammenhænge fx til søgning i store data mængder.<br />
Rekursive funktioner kan løse problemer som er meget vanskelige at løse på en ikke-rekursiv måde<br />
fx problemet om Hanois tårne hvor fx 111 ringe på en pind skal flyttes til en anden pind via en<br />
tredje pind - uden at en større ring på noget tidspunkt kommer til at ligge oven på en mindre ring.<br />
Rekursive funktioner bygger på det princip at hvis problemet gøres mindre er det lettere at løse.<br />
Fx er 2 i 9. potens det samme som 2 gange 2 i 8. potens og det er igen lig med 2 gange 2 i 7. osv!!<br />
På samme måde er Hanois tårne ulige nemmere at løse hvis der er 2 ringe end hvis der er 112 ringe!<br />
Følgende viser to eksempler på rekursive funktioner. Den første funktion potens() kunne have været<br />
beregnet på en ikke rekursiv måde men funktionen hanoi() kan - næsten - kun løses på en rekursiv<br />
måde:<br />
// Eksempel paa rekursive funktioner:<br />
//potens() og Hanois taarne:<br />
using System;<br />
class app<br />
{<br />
public static void Main(string[] args)<br />
{<br />
Console.Write("Indtast heltal nr1 til potens(): ");<br />
int tal1=int.Parse(Console.ReadLine());<br />
Console.Write("Indtast heltal nr2 (eksponenten) til potens(): ");<br />
int tal2=int.Parse(Console.ReadLine());<br />
Console.WriteLine("Funktionen potens() af {0} og {1} giver<br />
{2}",tal1,tal2,potens(tal1,tal2));<br />
Console.Write("Indtast antal ringe til funktionen Hanois Taarne: ");