Ciąg Fibbonaciego na wskaźnikach C#

0

Potrzebuję pomocy z programem, który wyświetla n podanych wyrazów ciągu. n może być definiowane na sztywno. Rzecz w tym, że musi być na wskaźnikach.

class Fib
{
 
public static int fib(int n)
{
if ((n==1)||(n==2))
return 1;
else
return fib(n-1)+fib(n-2);
}

static void Main(string[] args)
{
String line;
int n;
 
Console.WriteLine("Podaj, ktory wyraz ciagu Fibonacciego obliczyc");
line = Console.ReadLine();
n = int.Parse(line);
 
Console.WriteLine(n + "-ty wyraz ciagu Fibonacciego: " + fib(n));
}
}
}
0

Najpierw Piszesz, n podanych wyrazów ciagu, a na dole jest n ty wyraz ciagu. Co to znaczy na wskaźnikach, gdzie mają być te wskaźniki?

0

@kradziejciastkuf: Jesteś pewny, że wskaźniki, a nie referencje?

2

Nie wiem co robię :P Posiłkowałem się dokumentacją https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/unsafe-code-pointers/pointer-types Nie wiem czy to ma sens, ktoś kto się zna może się wypowiedzieć?

EDIT.

using System;

public class Program
{
    public static unsafe void Fibonacci(int number)
    {
        unsafe
        {
            fixed (int* p = new int[number])
            {
                p[0] = 0;
                p[1] = 1;

                for (int i = 2; i < number; i++)
                {
                    p[i] = p[i - 2] + p[i - 1];
                    Console.WriteLine(p[i]);
                }       
            }
        }
    }
    public static void Main(string[] args)
    {
        Fibonacci(10);
    }
}
0
Dregorio napisał(a):

Nie wiem co robię :P Posiłkowałem się dokumentacją https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/unsafe-code-pointers/pointer-types Nie wiem czy to ma sens

Działać działa. Wystarczy jedno unsafe – w nagłówku funkcji albo jako blok.
Można też zrezygnować z indeksowania wskaźnika na rzecz *(p + 1) = 1 itp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1