确定欧几里得函数的基础部分和递归部分。证明反复应用递归部分可以把公式的递归部分转变为基础部分的表达式
时间: 2024-05-30 11:09:49 浏览: 85
函数的递归应用
欧几里得算法的基础部分是当b等于0时,返回a,即 `if b == 0: return a`。递归部分是 `return gcd(b, a % b)`,其中a和b是输入的两个正整数。
我们来证明反复应用递归部分可以把公式的递归部分转变为基础部分的表达式。设a和b是两个正整数,d=gcd(a,b),则有以下三点需要证明:
1. 如果a<b,则在第一次递归调用时交换a和b的位置。这样,第一次递归调用时,a>=b。
2. 如果a%b==0,则有d=b。
3. 如果a%b!=0,则有gcd(b, a%b)=d。
对于第2点和第3点,我们可以使用归纳法证明。
当b是a的约数时,即a%b==0时,有d=b。这是基础部分。
假设当b是a的约数时,欧几里得算法的递归调用正确,即gcd(b, a%b)的值为d。
当a%b!=0时,设a=k*b+r,则有r=a-k*b。
根据欧几里得算法的递归部分,有gcd(a,b)=gcd(b,r)=gcd(b,a-k*b)。
又因为d=gcd(a,b),所以d=gcd(b,r)=gcd(b,a-k*b)。
因此,当a%b!=0时,gcd(b, a%b)=gcd(a, b)=d,递归调用正确。
综上所述,反复应用欧几里得算法的递归部分,可以将公式的递归部分转换为基础部分的表达式。
阅读全文