📅  最后修改于: 2023-12-03 15:00:53.121000             🧑  作者: Mango
GCD(最大公约数)指的是两个或多个整数共有约数中最大的一个。在程序开发中,经常需要求两个或多个数的最大公约数,GCD是一个非常常用的算法。
def gcd(a, b):
if b == 0:
return a
else:
return gcd(b, a % b)
这个算法的时间复杂度是 $O(log(max(a, b)))$,其中 $a$ 和 $b$ 是两个输入的数字。
斐波那契数列是一个非常著名的数学问题,它的定义如下:
一般来说,我们使用递归来实现斐波那契数列。但是,递归结果会非常的慢,因为它不断地重复计算相同的值。比较好的方式是使用动态规划。
def fibonacci_recursion(n):
if n == 1 or n == 2:
return 1
else:
return fibonacci_recursion(n-1) + fibonacci_recursion(n-2)
def fibonacci_dp(n):
dp = [0] * (n+1)
dp[1] = 1
dp[2] = 1
for i in range(3, n+1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
递归实现斐波那契数列的时间复杂度是 $O(2^n)$,而动态规划的时间复杂度是 $O(n)$。
GCD和斐波那契数是程序员非常常用的数学问题,掌握后可以在编程中得心应手。