uaveiro-leci/1ano/fp/aula10/recErrors.py

32 lines
637 B
Python

# Calcula o factorial de n, baseado na recorrencia n! = n*(n-1)!.
# Mas não termina! Detete a causa e corrija o erro.
def fact(n):
if n == 0:
return 1
return n*fact(n-1)
# Calcula o maximo divisor comum entre a e b.
# Baseia-se no algoritmo de Euclides.
# Mas não termina! Detete a causa e corrija o erro.
def gcd(a, b):
assert a > 0 and b > 0
if a%b == 0:
return b
return gcd(b, a%b)
def main():
print( fact(4) ) # 24
print( fact(5) ) # 120
x = 2*27*53*61
y = 2*2*17*23*53
print(x, y, gcd(x, y))
assert gcd(x, y) == 2*53
if __name__ == "__main__":
main()