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