易语言递归法求最大公约数

易语言采用用递归法求任意2个自然数的最大公约数,上一节我们曾采用辗转相除求任意2个自然数的最大公约数.
算法:递归
问题:求最大公约数(递归法)
问题描述:
求任意2个自然数的最大公约数,要求用递归法
问题分析:
递归法就是调用自身。
 求两个数的最大公约数的步骤如下:
 先用小的一个数除大的一个数,得第一个余数;
 再用第一个余数除小的一个数,得第二个余数;
 又用第二个余数除第一个余数,得第三个余数;
 这样逐次用后一个数去除前一个余数,直到余数是0为止。那么,最后一个除数就是所求的最大公约数(如果最后的除数是1,那么原来的两个数是互质数)。
例如求1515和600的最大公约数,
第一次:用600除1515,商2余315;
第二次:用315除600,商1余285;
第三次:用285除315,商1余30;
第四次:用30除285,商9余15;
第五次:用15除30,商2余0。
1515和600的最大公约数是15。

https://www.511yj.com/eyuyan-arithmetic-common.html

递归法求最大公约数源码

界面放置三个编辑框,两个用来输入,一个显示最大公约数

.版本 2
 
.子程序 _计算图形按钮_被单击
 
' 判断输入的数值,如果数值不合适就给出提示,合适就调用求最大公约数的子程序
.如果真 (到数值 (数一编辑框.内容) ≤ 0 或 到数值 (数二编辑框.内容) ≤ 0)
    信息框 (“请输入两个正整数”, 0, )
    返回 ()
.如果真结束
.如果真 (数一编辑框.内容 = “” 或 数二编辑框.内容 = “”)
    信息框 (“请输入两个正整数”, 0, )
    返回 ()
.如果真结束
' 输入的数值合适,调用求最大公约数的子程序
.如果 (到数值 (数一编辑框.内容) > 到数值 (数二编辑框.内容))
    较大数 = 到数值 (数一编辑框.内容)
    较小数 = 到数值 (数二编辑框.内容)
.否则
    较大数 = 到数值 (数二编辑框.内容)
    较小数 = 到数值 (数一编辑框.内容)
.如果结束
.如果 (较大数 < 99999999)  ' 判断输入的较大数的范围
    辗转相除 ()
.否则
    信息框 (“较大数的数值过大!应小于99999999!”, 0, )
.如果结束
 
 
.子程序 辗转相除, , , 求最大公约数的子程序
.局部变量 余数, 整数型
 
.如果 (较大数 % 较小数 = 0)
    结果编辑框.内容 = 到文本 (较小数)  ' 找到就显示
.否则
    余数 = 较大数 % 较小数
    较大数 = 较小数
    较小数 = 余数
    辗转相除 ()  ' 递归调用,继续找

分享到:

用微信扫一扫,分享给朋友


发布日期:

所属分类: 编程 标签: