muh
muh

Reputation: 11

Nth Fibonacci number

I am failed to print only the nth fibonacci number. In my code, when the user said to print nth trem it print the series upto nth term but i want to get the output only the nth term e.g if I say num=4 out put should be 2

please guide

here is the code:

N= int(input("How many terms? "))


N1 = 0
N2 = 1
sum = 2


if N <= 0:
   print("Plese enter a positive integer")
elif N == 1:
   print("Fibonacci sequence:")
   print(N1)
else:
   print("Fibonacci sequence:")
   print(N1,",",N2,end=' , ')
   while sum < N:
       Nth = N1 + N2
       print(Nth,end=' , ')

       N1 = N2
       N2 = Nth
       sum += 1

Upvotes: 1

Views: 920

Answers (3)

Lalit Vavdara
Lalit Vavdara

Reputation: 504

to achieve that output you can simply decrease the value of n by 1 and then carry on all the computation. For example:

def fib(n):
    n = n-1
    a, b = 0, 1
    count = 1
    while count <= abs(n):
        next = a + b
        a = b
        b = next
        count += 1
    return a 

Upvotes: 0

MerajA
MerajA

Reputation: 194

Simpler code, from the "How to Think Like a Comptuer Scientist: Python" book,

def fibonacci (n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fibonacci(n-1) + fibonacci(n-2)

Just call fibonacci passing your nth term as the argument.

Upvotes: 0

Diptendu
Diptendu

Reputation: 2158

The print stmt should be outside the loop

N= int(input("How many terms? "))


N1 = 0
N2 = 1
sum = 2


if N <= 0:
   print("Plese enter a positive integer")
elif N == 1:
   print("Fibonacci sequence:")
   print(N1)
else:
   print("Fibonacci sequence:")
   print(N1,",",N2,end=' , ')
   while sum < N:
       Nth = N1 + N2

       N1 = N2
       N2 = Nth
       sum += 1
   print(Nth,end=' , ')

Upvotes: 1

Related Questions