<pre name="code" class="cpp">/* *coyright(c)2014 龙城无泪 *All rights reserved *文件名 digui.c *作者:封尘之魂 *完毕日期:20141108 *版本V1.0 *问题描写叙述:求两个整数的最大公约数最小公倍数 *输入描写叙述:输入两个整数 *输出描写叙述:成功输出最大公约数最小公倍数 */ #include<stdio.h> int main() {int m,n,q,t,j,k; scanf("%d%d",&m,&n); j=m;k=n;if(m<n)//比較大小 {t=m; m=n; n=t; } q=m%n; while(q)//辗转相除法 {m=n; n=q; q=m%n; } printf("%d %d",n,j*k/n); }
另外一种循环
#include<stdio.h> int z(int a, int b) { return b==0?a:z(b, a%b);//递归推断 } int main() { int a,b,m; scanf("%d%d",&a,&b); m=z(a,b); printf("%d %d", m,a*b/m); }
心得:一般来说用循环解决的问题都能用递归解决 要多运用递归来解决循环的问题来锻炼自己的思维问题
方法:取代 要熟练的掌握替换之法 把没用过量赋值给用过的量,实现自己想要达到的目标