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

Lecture "Recursion", exercise 1

Open essepuntato opened this issue 6 years ago • 18 comments

Define a recursive function def exponentiation(base_number, exponent) for implementing the exponentiation operation, and test (by implementing the related test case) it on the following inputs: 34, 171, and 20.

essepuntato avatar Nov 30 '18 11:11 essepuntato

def test_pwr(n, expo, expected):
    if pwr(n, expo) == expected:
        return True
    else:
        return False
     
def pwr(n, expo):
    if(expo==0):
        result = 1
    elif(expo==1):
        result = n
    else: 
        result = n * pwr(n,expo-1)
    return result
print(test_pwr(3,4,81))
print(test_pwr(17,1,17))
print(test_pwr(2,0,1))
#true 
#true 
#true 

hizclick avatar Nov 30 '18 13:11 hizclick

First I approached the problem similarly to the multiplication recursion. That is, I wrote with pencil & paper a way to conceive of exponentiation in a recursive way. For example for 3^4:

3^4 = 3 x 3 x 3 x 3 3^4 = 3 x (3^3) 3^4 = 3 x (3 x (3^2)) 3^4 = 3 x (3 x (3 x (3^1))) 3^4 = 3 x (3 x (3 x (3 x (3^0))))

Since we know that any number raised to the power of 0 will give 1 (such as, 2^0=1, just like 64235626^0=1), we can use this as the base case.

# Test case for the exponentiation algorithm

def test_exponentiation(base_number, exponent, expected):
    result = exponentiation(base_number, exponent)
    if expected == result:
        return True
    else:
        return False

# Code of the exponentiation algorithm

def exponentiation(base_number, exponent):
    if exponent == 0: #this is the application of the base case as I mentioned above
        return 1 # any number to the power of 0 equals 1
    else:
        return base_number * exponentiation(base_number, exponent - 1) # reduce the exponent by one and multiply this whole thing by the base_number

# Three test runs of the algorithm

print(test_exponentiation(3, 4, 81))
print(test_exponentiation(17, 1, 17))
print(test_exponentiation(2, 0, 1))

delfimpandiani avatar Nov 30 '18 13:11 delfimpandiani

def test_exponentiation(n,e, expected):
    result = exponentiation(n,e)
    if expected == result:
        return True
    else:
        return False

def exponentiation(n, e):
    if e==0:
        return 1
    elif e==1:
        return n
    else:
        return n * exponentiation(n,e-1)
        
print(test_exponentiation(3,4,81))      #True
print(test_exponentiation(17,1,17))     #True
print(test_exponentiation(2,0,1))         #True

simayguzel avatar Nov 30 '18 15:11 simayguzel

def test_exp(n, e, expected): if expected == exp(n, e): return True else: return False

def exp(n, e): if e == 0: return 1 else: return n*exp(n, e-1)

print(test_exp(3,4,81)) print(test_exp(17,1,17)) print(test_exp(2,0,1))

True True True

federicabologna avatar Nov 30 '18 17:11 federicabologna

All true, I was stack in the temptative of doing this thing with another way, but I'm not able to solve a problems with variables.

image

MattiaSpadoni avatar Nov 30 '18 18:11 MattiaSpadoni

# Test case for the algorithm
def test_exponentiation(base_number, exponent, expected):
    result = base_number ** exponent
    if expected == result:
        return True
    else:
        return False

# Code of the algorithm
def exponentiation(base_number, exponent):
    x = base_number
    n = exponent
    if n == 0:
        return 1 # any integer raised to 0 return 1
    else:
        return x * exponentiation(x, n-1) # reduce the exponent of 1
                                          # multiply the exponentiation of the base_number
                                          # raised to the reduced exponent and the base_number
# run some tests
print(test_exponentiation(3, 4, 81))
print(test_exponentiation(17, 1, 17))
print(test_exponentiation(2, 0, 1))

EleonoraPeruch avatar Nov 30 '18 18:11 EleonoraPeruch

#Test case for the algorithm
def test_exponentiation(base_number, exponent, expected):
    result = exponentiation(base_number, exponent)
    if expected == result:
        return True
    else:
        return False

#Code of the algorithm
def exponentiation(base_number, exponent):
    if exponent == 0:
        return 1
    else:
        return base_number * exponentiation(base_number, exponent - 1)

print(exponentiation(5, 3)) #return 125

print(test_exponentiation(3, 4, 81)) #return True
print(test_exponentiation(17, 1, 17)) #return True
print(test_exponentiation(2, 0, 1)) #return True

beccadelbens avatar Dec 01 '18 10:12 beccadelbens

def exp_check(n,e,expected): if exp(n,e) == expected: return True else: return False

def exp(n,e): if (e==0): result=1 else: result=n*exp(n,e-1) return result

print (exp(2,3)) {8) print(exp(93,0)) {1)

print(exp_check(3,4,81)) {True) print(exp_check(17,1,17)) {True) print(exp_check(2,0,1)) {True)

bluebell94 avatar Dec 01 '18 16:12 bluebell94

Provided that in recursion x y = x * x y-1, that's my idea:

def test_exponentiation(base_number, exponent, expected):
    result = exponentiation(base_number, exponent)
    if expected == result:
        return True
    else:
        return False


def exponentiation(base_number, exponent):
    if exponent == 0:
        return 1
    else:
        return base_number * exponentiation(base_number, exponent - 1)


print(test_exponentiation(3, 4, 81))
print(test_exponentiation(17, 1, 17))
print(test_exponentiation(2, 0, 1))

friendlynihilist avatar Dec 02 '18 14:12 friendlynihilist

def test_exponentiation(num, exponent, expected):
    if  exponentiation(num, exponent) == expected:
        return True
    else: 
        return False

def exponentiation(num, exponent):
    if exponent == 0:
        return 1
    elif exponent == 1:
        return num
    else: 
        result = num * exponentiation(num,exponent - 1)
    return result

print(test_exponentiation(3, 4, 81)) print(test_exponentiation(17, 1, 17)) print(test_exponentiation(2, 0, 1))

tceron avatar Dec 02 '18 18:12 tceron

def test_my_alg(n, e, expected):
    return my_alg(n, e) == expected


def my_alg(n, e):

   if e == 0:
       output = 1
   else:
       output = n * my_alg(n, e - 1)

   return output


n1 = 3
e1 = 4
expected1 = 81
print(test_my_alg(n1, e1, expected1))
n2 = 17
e2 = 1
expected2 = 17
print(test_my_alg(n2, e2, expected2))
n3 = 2
e3 = 0
expected3 = 1
print(test_my_alg(n3, e3, expected3))

mangiafrangette avatar Dec 02 '18 20:12 mangiafrangette

def test_exponentiation(n,e, expected): result = exponentiation(n,e) if expected == result: return True else: return False

def exponentiation(n, e): if e==0: return 1 elif e==1: return n else: return n * exponentiation(n,e-1)

print(test_exponentiation(3,4,81)) Output:True print(test_exponentiation(17,1,17)) Output:True print(test_exponentiation(2,0,1)) Output:True

lisasiurina avatar Dec 02 '18 21:12 lisasiurina

# Test case for the algorithm 
def test_exponentiation(base_number, exponent, expected): 
    result = exponentiation(base_number, exponent) 
    if expected == result: 
        return True 
    else: 
        return False 

# Code of the algorithm
def exponentiation(base_number, exponent):
    if exponent == 0: 
        return 1
    else:        
        return base_number * exponentiation(base_number, exponent - 1) 

# Test Cases 
print(test_exponentiation(3, 4, 81)) 
print(test_exponentiation(17, 1, 17)) 
print(test_exponentiation(2, 0, 1))

SeverinJB avatar Dec 03 '18 09:12 SeverinJB

# Test case for the algorithm
def exponentiation_test(base_number, exponent, expected):
     if exponentiation(base_number, exponent)== expected:
         return True
     else:
         return False
     
#code         
def exponentiation(base_number, exponent):
    if exponent == 0:
        return 1     
    else:
        return base_number * exponentiation(base_number, exponent - 1)
 
#test cases   
print(exponentiation_test(3,4,81))        
print(exponentiation_test(17,1,17))
print (exponentiation_test(2,0,1))

ilsamoano avatar Dec 03 '18 18:12 ilsamoano

esercizio 11

MilenaCorbellini avatar Dec 04 '18 15:12 MilenaCorbellini

#Test case for the algorithm

def test_expontentiation(n, exponent, expected) result = exponentiation(n, exponent) if expected == result return True else return False

#Code of the algorithm

def exponentation(n, e): if exponent == 0: return 1 elif exponent == 1: return n else return n ** exponentiation(n, e-1)

print (test_exponentiation(3, 4, 81)) print(test_exponentiation(17, 1, 17)) print(test_exponentiation(2, 0, 1))

DavideApolloni avatar Dec 05 '18 15:12 DavideApolloni

def test_exponentation(base_number, exponent, expected):
    result = exponentation(base_number, exponent)
    if expected == result:
        return True
    else:
        return False


def exponentation(base_number, exponent):
    if exponent == 0:
        return 1
    if exponent == 1:
        return base_number
    else:
        return base_number * exponentation(base_number, exponent - 1)


print(test_exponentation(3, 4, 81))
print(test_exponentation(17, 1, 17))
print(test_exponentation(2, 0, 1))

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_exponentation(int_1, int_2, expected):
    result = exponentation(int_1, int_2)
    if expected == result:
        return True
    else:
        return False


# Code of the algorithm
def exponentation(int_1, int_2):
    if int_2 == 0:
        return 1
    else:
        return int_1 * exponentation(int_1, int_2 - 1)


print(test_exponentation(3, 4, 81))
print(test_exponentation(17, 1, 17))
print(test_exponentation(2, 0, 1))

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