Jeg er ved at portere noget C kode og er rendt ind i et problem med en rekursiv funktion.
For at illustrere har jeg strikket følgende sammen i C.
#include "stdafx.h"
int a[10] = {0,0,0,0,0,0,0,0,0,0};
void recursive(int* ar, int n)
{
for(int i=0;i<n;i++)
ar[i]++;
if(n>0)
recursive(&ar[1],n-1);
}
int _tmain(int argc, _TCHAR* argv[])
{
recursive(a,10);
for(int i=0;i<10;i++)
printf("%i\n",a[i]);
char pauseBeforeExit = getchar();
return 0;
}
Her udnyttes at man via pointere rekursivt kan kalde samme funktion blot med en ny start adresse i array'et.
Men hvordan kringler jeg den i C#?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] a = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
recursive(a,10);
ConsoleKeyInfo c = Console.ReadKey();
}
void recursive(int[] ar, int n)
{
for (int i = 0; i < n; i++)
ar[i]++;
if (n > 0)
recursive(&ar[1], n - 1); //!!!
}
}
}
Sidste linie er et 'no go' i C# da pointere er unsafe.
Nogen, som har et fif.
Indlæg senest redigeret d. 12.05.2010 16:53 af Bruger #15897