0

I want to create a Fibonacci Sequence. A user will enter a number, For example, 9 then the Fibonacci Sequence will be displayed, ending with the nearest Fibonacci Sequence number. So, in this case: 0,1,1,2,3,5,8

I am having a problem with storing elements in the 2D array. When loop starts from 0, 0 at 0 index is stored, and when loop comes to 1, then again 1 at index 0 is stored, but it should have stored at index 1. This is causing index out of range error in the upper part of code. Should I use something different than append or something else?

 func fabino(until: Int) {

    if until > 2 {
        for number in 0...until {

            var arrayOfDemoNumbers = [Int]()

            if number > 1 {
               arrayOfDemoNumbers.append(arrayOfDemoNumbers[number - 1] + arrayOfDemoNumbers[number - 2])
                listOfNumbers = listOfNumbers + "\(arrayOfDemoNumbers[number]), "
            }else{
                sum = number + sum
                arrayOfDemoNumbers.append(sum)
               // arrayOfDemoNumbers[number] = sum
                listOfNumbers = listOfNumbers + "\(sum), "
                dump(arrayOfDemoNumbers)
            }
        }}else{
            self.listOfNumbers = "0,1,1"
        }

        labelToChange.text = listOfNumbers

    }
1
  • 1
    you are initializing an empty arrayOfDemoNumbers every time it loops thus clearing it out. Commented Jan 10, 2018 at 20:04

1 Answer 1

1
 func fabino(until: Int) {
    var arrayOfDemoNumbers = [Int]()

    if until > 2 {
        for number in 0...until {

            if number > 1 {
               arrayOfDemoNumbers.append(arrayOfDemoNumbers[number - 1] + arrayOfDemoNumbers[number - 2])
                listOfNumbers = listOfNumbers + "\(arrayOfDemoNumbers[number]), "
            }else{
                sum = number + sum
                arrayOfDemoNumbers.append(sum)
               // arrayOfDemoNumbers[number] = sum
                listOfNumbers = listOfNumbers + "\(sum), "
                dump(arrayOfDemoNumbers)
            }
        }}else{
            self.listOfNumbers = "0,1,1"
        }

        labelToChange.text = listOfNumbers

    }
Sign up to request clarification or add additional context in comments.

1 Comment

Good answers explain what the issue was and how the answer fixes it. Please don't just post code.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.