您好、欢迎来到现金彩票网!
当前位置:在线斗牛棋牌游戏 > 尾递归 >

c++这个求最大公约数的函数求大佬分析!!!

发布时间:2019-07-07 15:15 来源:未知 编辑:admin

  c++这个求最大公约数的函数求大佬分析!!!如图,主要是标注的那个函数,我在网上看到的,虽然我能理解辗转相除法,但是看到这个我分析了半天还是懵了。之前自己写都是用辗转相除写的...

  c++这个求最大公约数的函数求大佬分析!!!如图,主要是标注的那个函数,我在网上看到的,虽然我能理解辗转相除法,但是看到这个我分析了半天还是懵了。之前自己写都是用辗转相除写的比较多,这尼玛一行就搞定了,还不用判断两个数谁大谁小要不要互换位置的问题,决定以后就按这个写了!但是希望有个大佬来帮我分析一下为啥这样写可以

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  2018-06-29展开全部辗转相除法终止条件就是余数为0,也就是n=0,这时候条件语句按照后半段取值,返回m,也就是最终的最大公约数。而当n!=0时的算法是递推公式gcd(m,n)=gcd(n,m%n)

  至于交换大小,当mn的时候m%n=m相当于gcd(m,n)=gcd(n,m)就调整好大小顺序了,之后后一个参数都是严格小于前一个的,就没有顺序问题了。

  假设在13行调用gcd函数时,a的值为7,b的值为35;进入gcd函数执行第六行代码,这个函数只有当n的值等于0的时候,才会停止递归;现在我们的n其实就是35,不满足条件则执行gcd(n,m%n)进行递归;这时候递归到一个新的函数,现在的m是35,n是7(因为7%35的结果为7),然后再执行第六行代码,发现n依然不等于0;继续递归也就是执行gcd(n,m%n),现在m的值为7,n的值为0(因为35%7的结果为0)。

  以上是对这个函数进行的举例说明,其实主要还是在gcd(n,m%n)这个代码上,自己慢慢体会下,不难掌握的。

http://missartypants.com/weidigui/272.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有