top of page

Fibonacci Sequence Algorithm

C# / Unity

using System;
using System.Globalization;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class FibonacciSequence : MonoBehaviour
{
    public TextMeshProUGUI outputText;
    public TMP_InputField amountInputField;

    private TMP_InputField startingInputField;

    private int startingInput, amountInput;

    private void Start()
    {
        startingInputField = GetComponent<TMP_InputField>();
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Return))
        {
            //Check if numbers were inputted or not
            if (int.TryParse(startingInputField.text, NumberStyles.Number, CultureInfo.CurrentCulture.NumberFormat, out startingInput) &&
                int.TryParse(amountInputField.text, NumberStyles.Number, CultureInfo.CurrentCulture.NumberFormat, out amountInput))
            {
                //Display Length Safety Check
                if (amountInput <= 30)
                {
                    //Get the sequence
                    List<long> sequenceList = WriteSequence(startingInput, amountInput);
                    //Create a list for string converstion
                    List<string> sequenceListConverted = new List<string>();
                    //Loop through the numbers and convert them to string, with correct format
                    foreach (long number in sequenceList)
                    {
                        sequenceListConverted.Add(number.ToString("#,##0"));
                    }
                    //Convert the list to a string with seperations for display
                    string sequence = string.Join(" | ", sequenceListConverted.ToArray());
                    //Display results
                    outputText.text = "The Fibonacchi sequence starting with '" + startingInput.ToString("#,##0") + "' executing '" + amountInput.ToString("#,##0") + "' times is \n"
                        + sequence;
                }
                //Tell user the length input is too large
                else
                {
                    outputText.text = "Sequence length too long to display.";
                }
            }
            //Tell user input was invalid
            else
            {
                outputText.text = "No int (Numbers) were entered, \none was too big, or only one number was entered.";
            }

            //Reset input fields
            startingInputField.text = "";
            amountInputField.text = "";
        }
    }

    //Using a long just to display larger numbers
    public List<long> WriteSequence(int startingNumber, int amountNumber)
    {
        //Convert input to long for computing
        long tempNum = Convert.ToInt64(startingNumber);
        //Creating output list
        List<long> output = new List<long>();
        //Adding beginning of sequence
        output.Add(0);
        output.Add(startingNumber);
        //Loop through the sequence
        for (int i = 0; i < amountNumber; i++)
        {
            //Add current iteration to previous
            tempNum += output[i];
            //Add new iteration to list
            output.Add(tempNum);
        }
        return output;
    }
}

bottom of page