文章目录[隐藏]
易语言采用用递归法求任意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。
http://www.511yj.com/eyuyan-arithmetic-common.html
递归法求最大公约数源码
界面放置三个编辑框,两个用来输入,一个显示最大公约数
.版本 2 .子程序 _计算图形按钮_被单击 ' 判断输入的数值,如果数值不合适就给出提示,合适就调用求最大公约数的子程序 .如果真 (到数值 (数一编辑框.内容) ≤ 0 或 到数值 (数二编辑框.内容) ≤ 0) 信息框 (“请输入两个正整数”, 0, ) 返回 () .如果真结束 .如果真 (数一编辑框.内容 = “” 或 数二编辑框.内容 = “”) 信息框 (“请输入两个正整数”, 0, ) 返回 () .如果真结束 ' 输入的数值合适,调用求最大公约数的子程序 .如果 (到数值 (数一编辑框.内容) > 到数值 (数二编辑框.内容)) 较大数 = 到数值 (数一编辑框.内容) 较小数 = 到数值 (数二编辑框.内容) .否则 较大数 = 到数值 (数二编辑框.内容) 较小数 = 到数值 (数一编辑框.内容) .如果结束 .如果 (较大数 < 99999999) ' 判断输入的较大数的范围 辗转相除 () .否则 信息框 (“较大数的数值过大!应小于99999999!”, 0, ) .如果结束 .子程序 辗转相除, , , 求最大公约数的子程序 .局部变量 余数, 整数型 .如果 (较大数 % 较小数 = 0) 结果编辑框.内容 = 到文本 (较小数) ' 找到就显示 .否则 余数 = 较大数 % 较小数 较大数 = 较小数 较小数 = 余数 辗转相除 () ' 递归调用,继续找