2018-2019 icon indicating copy to clipboard operation
2018-2019 copied to clipboard

Lecture "Recursion", exercise 2

Open essepuntato opened this issue 6 years ago • 20 comments

Define a recursive function def fib(n) that implements the algorithm to find the nth Fibonacci number – where if n is less than or equal to 0, then 0 is returned as result; if n is equal to 1, then 1 is returned; otherwise, return the sum of the same function called with n-1 and n-2 as input. Please accompany the function with the related test case.

essepuntato avatar Nov 30 '18 11:11 essepuntato

def test_fab(n,expected):
    if expected == fab(n):
        return True
    else:
        return False

def fab(n):
    if(n<=0):
        result = 0
    elif(n==1):
        result = 1
    else: 
        result = fab(n-1) + fab(n-2)
    return result
print(test_fab(10,55))
print(test_fab(4,3)) 
#true 
#true

hizclick avatar Nov 30 '18 13:11 hizclick

# Test case for the exponentiation algorithm

def test_fib(n, expected):
    result = fib(n)
    if expected == result:
        return True
    else:
        return False

# Code of the exponentiation algorithm

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

# Three test runs of the algorithm

print(test_fib(7, 13))
print(test_fib(9, 34))

#true
#true```

delfimpandiani avatar Nov 30 '18 13:11 delfimpandiani

#I wrote this algorithm for exercise #2 
def F(n):
if (n == 0) :
return 0
if (n == 1 or n== 2) :
return 1
else:
return F(n-1)+F(n-2)

#The one I did today:

def test_F(n,expected):
    
    result = F(n)
    if result == expected:
        return True
    else:
        return False

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

print(test_F(14,377))     #True
print(test_F(12,144))     #True

simayguzel avatar Nov 30 '18 15:11 simayguzel

def test_fib(n, expected):
    if expected == fib(n):
        return True
    else:
        return False

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

print(test_fib(7,13))
print(test_fib(0,0))
print(test_fib(4,3))

True True True

federicabologna avatar Nov 30 '18 17:11 federicabologna

# Test case for the algorithm
def test_fib(n, expected):
    result = fib(n)
    if result == expected:
        return True
    else:
        return False
        
# Code of the algorithm
def fib(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1)+fib(n-2)
        
# Test some cases
print(test_fib(7, 13))
print(test_fib(12, 144))
print(test_fib(1, 1))

True
True
True

EleonoraPeruch avatar Dec 01 '18 11:12 EleonoraPeruch

def test_fib(n, expected): result=fib(n) if result==expected: return True else: return False

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

print(test_fib(0,0)) print(test_fib(7,13)) print(test_fib(6,8)

True True True

Totaro1996 avatar Dec 01 '18 16:12 Totaro1996

def fib_check(n,expected): if fib (n) == expected: return True else: return False

def fib(n): if (n<=0): return 0 else: if (n==1): return 1 else: return fib(n-1) + fib(n-2)

print fib(5) {5}

print fib_check(11,89) {True} print fib_check(7,13) {True}

bluebell94 avatar Dec 01 '18 17:12 bluebell94

I have to check it on Pycharm, increasing n is a quite problematic about the computational work. I've written 44 as input of "cosalunga" on pycharm and I'm still waiting the result.

image

MattiaSpadoni avatar Dec 01 '18 17:12 MattiaSpadoni

#Test case for the algorithm
def test_fib(n, expected):
    result = fib(n)
    if expected == result:
        return True
    else:
        return False

#Code of the algorithm
def fib(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1)+fib(n-2)

print (test_fib(-1, 0)) #True
print (test_fib(1, 1)) #True

beccadelbens avatar Dec 01 '18 17:12 beccadelbens

I've found this recursive algorithm very resource-consuming because it has to calculate each previous number for every number, so I've used low inputs to mitigate the effect. I guess there's a faster way to do that...maybe creating a list to store numbers and reduce the counting?

def test_fib(n, expected): #my test case
    result = fib(n)
    if expected == result:
        return True
    else:
        return False

def fib(n): #fib alg

    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)

print(test_fib(3, 2)) #true
print(test_fib(5, 5)) #true

friendlynihilist avatar Dec 02 '18 15:12 friendlynihilist

def test_fib(n,expected):
   result=fib(n)
    if expected==result:
  return True
    else:
     return False


def fib(n):
    if n<=0:
        return 0
    if n==1:
        return 1
    return fib(n-1)+ fib(n-2)

print(test_fib(8,21)) #true 
print(test_fib(5,5)) #true 
print(fib(8))

saraarmaroli avatar Dec 02 '18 17:12 saraarmaroli

def test_fib(n, expected):
    return fib(n) == expected


def fib(n):

    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n-1) + fib(n-2)


n1 = 1
expected1 = 1
print(test_fib(n1, expected1))
n2 = 4
expected2 = 3
print(test_fib(n2, expected2))
n3 = 16
expected3 = 987
print(test_fib(n3, expected3))

mangiafrangette avatar Dec 02 '18 21:12 mangiafrangette

def test_fab(n,expected): if expected == fab(n): return True else: return False

def fab(n): if(n<=0): result = 0 elif(n==1): result = 1 else: result = fab(n-1) + fab(n-2) return result print(test_fab(8,21)) print(test_fab(2,1))

lisasiurina avatar Dec 02 '18 21:12 lisasiurina

def test_fib(n, expected):
    result = fib(n)
    if expected == result:
        return True
    else:
        return False

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

print(test_fib(1,1)) #true print(test_fib(0,0)) #true print(test_fib(9,34)) #true

tceron avatar Dec 03 '18 07:12 tceron

# Test case for the algorithm 
def test_fib(n, expected): 
    result = fib(n) 
    if expected == result: 
        return True 
    else: 
        return False 

# Code of the algorithm
def fib(n):
    if n == 0: 
        return 0
    elif n == 1: 
        return 1
    else:        
        return fib(n-1) + fib(n-2)

# Test Cases 
print(test_fib(3, 2)) 
print(test_fib(5, 5)) 
print(test_fib(4, 3))

SeverinJB avatar Dec 03 '18 09:12 SeverinJB


#test
def test_fib(n, expected):
    if fib(n) == expected:
        return True
    else:
        return False
    
#code    
def fib(n):
    if n <= 0:
        return 0
    if n == 1:
        return 1
    else:
        return fib(n - 1) + fib (n - 2)
    
#test cases    
print(test_fib(5,5)) #true
print(test_fib(8,21)) #true
print(test_fib(9,34)) #true
        
        

ilsamoano avatar Dec 03 '18 18:12 ilsamoano

def test_fib(n, expected):
    if fib(n) == expected:
        return True
    else:
        return False
def fib(n):
    if n <= 0:
        return 0
    elif n == 1:
        return 1
    else:
        return fib(n -1) + fib(n - 2)
print(test_fib(7, 13))
print(test_fib(5, 5))
print(test_fib(1, 1))

MilenaCorbellini avatar Dec 04 '18 15:12 MilenaCorbellini

#Test case for the algorithm def test_fib(n, expected): result = fib(n) if expected == result: return True else: return False

#Code of the algorithm def fib(n): if n <= 0: return 0 elif n == 1: return 1 else: return fib(n-1) + fib(n-2)

print(test_fib(7, 13)) print(test_fib(1,1))

DavideApolloni avatar Dec 05 '18 15:12 DavideApolloni

def test_fib(n, expected):
    result = fib(n)
    if result == expected:
        return True
    else:
        return False

def fib(n):
    if n <= 0:
        return 0
    if n == 1:
        return 1
    else:
        return fib(n-1)+fib(n-2)


print(test_fib(-4, 0))    #True
print(test_fib(1, 1))     #True
print(test_fib(4, 3))     #True

andreamust avatar Dec 05 '18 17:12 andreamust

Hi guys,

here my take on the exercise (source code available online):

# Test case for the algorithm
def test_fib(n, expected):
    result = fib(n)
    if expected == result:
        return True
    else:
        return False


# Code of the algorithm
def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n-1) + fib(n-2)


print(test_fib(0, 0))
print(test_fib(1, 1))
print(test_fib(2, 1))
print(test_fib(7, 13))

Some comments:

  1. Python code and indentation: please, in your answers to the various questions, if you have to write down a Python code, be sure that the correct indent is preserved by previewing your post before to publish it. You can use the ``` environment for defining your Python code, e.g.:

```
write your Python code here
```

essepuntato avatar Dec 06 '18 14:12 essepuntato