Reputation: 3
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
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