目录
方法一:循环法
#include <stdio.h> int main() { int m=30,n=20; while(n!=0) { int tmp=m%n; m=n; n=tmp; } printf("%d",m); return 0; }
方法二:递归法【if-else语句】
#include <stdio.h> int gcd(int a,int b); int main() { int m=30,n=20; int ret=gcd(m,n); printf("%d",ret); return 0; } int gcd(int a,int b) { if(b==0) return a; else return gcd(b,a%b); }
方法三:递归简化版【三目运算符】
#include <stdio.h> #include <stdio.h> int gcd(int a,int b); int main() { int m=30,n=20; int ret=gcd(m,n); printf("%d",ret); return 0; } int gcd(int a,int b) { return b==0?a:gcd(b,a%b); }
已经不记得,这是第几次去看欧几里得/辗转相除法的原理了。总是看了理解了,题做出来了,没有回顾复习,再做又忘又去看题解。对自己无语了。
咱就是说,再不长心,神仙来了,也拦不住你重蹈覆辙呀。
今天恰好是一个契机吧【两个作业都只是涉及了最大公约数的求解,最基本的,都不会写】帮我认清自己现在学习中的一些问题。
现做出以下调整:每月的30/31进行阶段性总结和回顾。方式:口述基本原理,并用代码表示自己的想法。
目前的坑:①四舍五入
②最大公约数