comp-think / 2019-2020

The GitHub repository containing all the material related to the Computational Thinking and Programming course of the Digital Humanities and Digital Knowledge degree at the University of Bologna (a.a. 2019/2020).
Other
12 stars 3 forks source link

Lecture "Recursion", exercise 1 #25

Open essepuntato opened 4 years ago

essepuntato commented 4 years ago

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

ereuhl commented 4 years ago
def exponentiation(base_number, exponent):
    if exponent == 0:
        return 1
    elif exponent == 1:
        return base_number
    elif exponent == 2:
        return  base_number*base_number
    else:
        return base_number*exponentiation(base_number, exponent-1)

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

print(test_exponentiation(3, 4, 81)) # True
print(test_exponentiation(17, 1, 17)) # True
print(test_exponentiation(2, 0, 1)) # True
arcangelo7 commented 4 years ago
def test_exponentiation(base_number, exponent, expected):
    if exponentiation(base_number, exponent) == expected:
        return True
    else:
        return False

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

print(test_exponentiation(3, 4, 81)) # True
print(test_exponentiation(17, 1, 17)) # True
print(test_exponentiation(2, 0, 1)) # True
Vince2992 commented 4 years ago

Ex1_11(A) Ex1_11(B)

FrancescoFernicola commented 4 years ago

Here I am considering the value of 0^0 in algebra, namely 0^0=1. If we were to consider it from the point of view of mathematical analysis, we would have to leave it undefined, but then I wouldn't really know how to implement the recursive element.

def test_exponentiation(base_number, exponent, expected):
    result = exponentiation(base_number, exponent)
    if result == expected:
        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)) #True
print(test_exponentiation(17, 1, 17))  #True
print(test_exponentiation(2, 0, 1))  #True
print(test_exponentiation(0, 0, 1))  #True
print(test_exponentiation(1, 0, 1))  #True
print(test_exponentiation(0, 2, 0))  #True
arimuti commented 4 years ago

image

aschimmenti commented 4 years ago

exponentiation True True True

essepuntato commented 4 years ago

Hi all,

please find attached my personal solution – also available online:

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

# Code of the algorithm
def exponentation(base_number, exponent):
    if exponent == 0:
        return 1
    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))
print(test_exponentation(0, 15, 0))
print(test_exponentation(0, 0, 1))