递归练习---求两个数的最大公约数

 package cn.digui_2015_11_7_周六;
import java.util.Random;
/*
 *  2015.11.7 8:44 周六
 *  递归,求最大公约数
 */
public class MaxCommonDivisor {
 private static int result = 1;;
 public static int[] arr = new int[2];
 public static void main(String[] args) {
  createTwoRandomB();
  maxComDiv(arr[0], arr[1]);
  createTwoRandom();
  
  createTwoRandomC();
 }
 public static void maxComDiv(int num1, int num2) {
  int result = recMaxComDiv(num1, num2);
  if(result != 1){   
   System.out.println("the value of MaxCommonDivisor is  : " + result);
  }else{
   System.out.println("not exists MaxCommonDivisor");
  }
 }
 //干活出力的是这个函数
 /*
  * 查看百度百科 ”最大公约数“ 里,有一种算是是 ”短除符号 “算法,以这个为依据进行的设计
  */
 private static int recMaxComDiv(int a, int b) {
  for (int i = 2; i <= Math.min(a, b) ; i++) {
   if (a % i == 0 && b % i == 0) {
    result *= i;
    recMaxComDiv(a / i, b / i);
    break;
   }
  }
  return result;
 }
  
 public static void createTwoRandom() {
  Random random = new Random();
  int i = 0;
  while (true) {
   int num = random.nextInt(100);
   if (num >= 2) {
    arr[i++] = num;
   }

   if (i == 2) {
    break;
   }
  }
  System.out.println("产生的两个随机数是:" + arr[0] + "  " + arr[1]);
 }
 public static void createTwoRandomB() {
  for (int i = 0; i < 2; i++) {
   arr[i] = (int) (Math.random() * 100 + 2);  //范围是[2,102)之间的随机数
  }
  System.out.println("产生的两个随机数是:" + arr[0] + "  " + arr[1]);
 }
 //下面这个方式是有问题的,当初始条件(一开始运算都)不满足while条件时,arr数组,全是默认值0
 public static void createTwoRandomC() {
  Random random = new Random();
  int i = 0;
  int num;
  while ((num = random.nextInt(100)) >= 2 && i < 2) {
   arr[i++] = num;
  }
  System.out.println("产生的两个随机数是:" + arr[0] + "  " + arr[1]);
 }
}

转载于:https://my.oschina.net/u/2507526/blog/527173

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值