63.7k views
1 vote
#The Fibonacci sequence is a number sequence where each #number is the sum of the previous two numbers. The first #two numbers are defined as 0 and 1, so the third number is #1 (0 + 1 = 1), the fourth number is 2 (1 + 1 = 2), the #fifth number is 3 (1 + 2 = 3), the sixth number is 5 #(2 + 3 = 5), and so on.

#
#Below we've started a class called FibSeq. At any time, #FibSeq holds two values from the Fibonacci sequence: #back1 and back2.
#
#Create a new method inside FibSeq called next_number. The #next_number method should:
#
# - Calculate and return the next number in the sequence, # based on the previous 2. # - Update back2 with the former value of back1, and update # back1 with the new next item in the sequence.
#
#This means that consecutive calls to next_number should #yield each consecutive number from the Fibonacci sequence. #Calling next_number 5 times would print 1, 2, 3, 5, and 8.
class FibSeq:
def __init__(self):
self.back1 = 1
self.back2 = 0
def next_number(self):
self.back1=self.back1+self.back2 # updated the back1 value to the next number in the series first
self.back2=self.back1-self.back2 #updated the back2 value with previous back1 value
yield (self.back1) # yielded the next number in the series since it is updated as back1 so yielded back1
f = FibSeq()
for i in range(5): # here i have iterated the series only 5 times u can change it as you like
s=f.next_number()
print(next(s))# here next is an iterator function for the yield generator.
#The code below will test your method. It's not used for
#grading, so feel free to change it. As written, it should
#print 1, 2, 3, 5, and 8.
newFib = FibSeq()
print(newFib.next_number())
print(newFib.next_number())
print(newFib.next_number())
print(newFib.next_number())
print(newFib.next_number())

1 Answer

2 votes

Answer:

Here is the next_number method:

def next_number(self): #method to return next number in the sequence

temporary = self.back1 + self.back2 # adds previous number to next number and stores the result in a temporary variable

self.back2 = self.back1 #Updates back2 with the former value of back1,

self.back1 = temporary #update back1 with the new next item in the sequence.

return temporary #

Step-by-step explanation:

I will explain the working of the above method.

back1 = 1

back2 = 0

At first call to next_number() method:

temporary = back1 + back2

= 1 + 0

temporary = 1

self.back2 = self.back1

self.back2 = 1

self.back1 = temporary

self.back1 = 1

return temporary

This return statement returns the value stored in temporary variable i.e. 1

Output: 1

back1 = 1

back2 = 1

At second call to next_number() method:

temporary = back1 + back2

= 1 + 1

temporary = 2

self.back2 = self.back1

self.back2 = 1

self.back1 = temporary

self.back1 = 2

return temporary

This return statement returns the value stored in temporary variable i.e. 2

output: 2

back1 = 2

back2 = 1

At second call to next_number() method:

temporary = back1 + back2

= 2 + 1

temporary = 3

self.back2 = self.back1

self.back2 = 2

self.back1 = temporary

self.back1 = 3

return temporary

This return statement returns the value stored in temporary variable i.e. 3

Output: 3

back1 = 3

back2 = 2

At second call to next_number() method:

temporary = back1 + back2

= 3 + 2

temporary = 5

self.back2 = self.back1

self.back2 = 3

self.back1 = temporary

self.back1 = 5

return temporary

This return statement returns the value stored in temporary variable i.e. 5

Output: 5

back1 = 5

back2 = 3

At second call to next_number() method:

temporary = back1 + back2

= 5 + 3

temporary = 8

self.back2 = self.back1

self.back2 = 5

self.back1 = temporary

self.back1 = 8

return temporary

This return statement returns the value stored in temporary variable i.e. 8

Output: 8

Calling next_number 5 times would print 1, 2, 3, 5, and 8.

The complete program along with its output is attached.

#The Fibonacci sequence is a number sequence where each #number is the sum of the-example-1
User Yassine Dotma
by
5.9k points