OleK00
OleK00

Reputation: 3

"index 14 is out of bounds for axis 0 with size 2"

I have problem with my code, I'm getting error "index 14 is out of bounds for axis 0 with size 2".

Parameters: n (int): liczba określająca ilość wyrazów ciągu do obliczenia

Returns: np.ndarray: wektor n pierwszych wyrazów ciągu Fibonnaciego.

def fib(n:int):
    if(n > 0 and isinstance(n, int)):

        fibonacci = np.array([1, 2])

        if(n == 1):
            return np.array([1])

        if(n == 2):
            return fibonacci

        if(n > 2):

            for i in range(2, n):
                fibonacci = np.append(fibonacci, (fibonacci[n-1] + fibonacci[n-2]))

            return fibonacci

    else:
        return None

Upvotes: 0

Views: 160

Answers (1)

silver6454
silver6454

Reputation: 150

Easy fix - you just need to change the line:

fibonacci = np.append(fibonacci, (fibonacci[n-1] + fibonacci[n-2]))

to

fibonacci = np.append(fibonacci, (fibonacci[i-1] + fibonacci[i-2]))

Since you are incrementing i in the loop and not n

import numpy as np

def fib(n):
        if(n > 0 and isinstance(n, int)):
                fibonacci = np.array([1, 2])

        if(n == 1):
                return np.array([1])

        if(n == 2):
                return fibonacci

        if(n > 2):
                for i in range(2, n):
                        fibonacci = np.append(fibonacci, fibonacci[i-1] + fibonacci[i-2])

                return fibonacci

        else:
                return None

print(fib(50))

Upvotes: 1

Related Questions