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

31 lines
652 B
Python
Raw Normal View History

2022-12-20 17:57:02 +00:00
# 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)
2022-12-20 17:57:02 +00:00
# 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:
2022-12-20 17:57:02 +00:00
return b
return gcd(b, a % b)
2022-12-20 17:57:02 +00:00
def main():
print(fact(4)) # 24
print(fact(5)) # 120
2022-12-20 17:57:02 +00:00
x = 2 * 27 * 53 * 61
y = 2 * 2 * 17 * 23 * 53
2022-12-20 17:57:02 +00:00
print(x, y, gcd(x, y))
assert gcd(x, y) == 2 * 53
2022-12-20 17:57:02 +00:00
if __name__ == "__main__":
main()