《C语言入门100例》(第23例) 最简分数

1979. 找出数组的最大公约数
给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。
两个数的 最大公约数 是能够被两个数整除的最大正整数。

/**给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。
两个数的 最大公约数 是能够被两个数整除的最大正整数。 */
class Solution {
    
    //辗转相减法...
    public int findGCD(int[] nums) {
    
    
        int maxNum = nums[0],minNum = nums[0];
        for(int num : nums){
    
    //求出最值
            maxNum = Math.max(maxNum,num);
            minNum = Math.min(minNum,num);
        }
        return helper(maxNum,minNum);//调用函数...
    }
    private int helper(int numA, int numB){
    
    
        int numC = Math.max(numA,numB),numD = Math.min(numA ,numB);
        if(numC % numD!= 0){
    
    
            return helper(numC - numD, numD);
        }
        return numD;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_52230126/article/details/121508533