亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Java中遞歸地將數組中的對象與另一個對象相乘

在Java中遞歸地將數組中的對象與另一個對象相乘

MM們 2022-12-21 16:44:39
你好,我正在學習 Java,在完成了一些學習遞歸的任務后,我給自己做了一些練習來學習更多,但現在我正在努力學習一些......所以主要的問題是,當數組中的元素是對象時,我不知道如何遞歸地乘以數組中的每個元素(也許最后是否有對象沒有區別)。所以我給自己的練習是:檢查 1 / 3 是否在給定的數組中。如果是,則將該數組中的所有內容乘以 2 / 1。這是分數: private int numerator;      // Zaehler private int denominator;    // Nenner        public Fraction ( int num, int denom )        {            if ( denom != 0 )            {                if ( denom < 0 )                {                    numerator = -num;                    denominator = -denom;                }                else                {                    numerator = num;                    denominator = denom;                }                reduce();            }            else            {                // error: division by zero                throw new IllegalArgumentException();            }        }        public Fraction()        {            numerator = 0;            denominator = 1;        }        public Fraction( int num )        {            numerator = num;            denominator = 1;        }所以我通過 for 循環完成了它:public static Fraction[] mulWithFor(Fraction[] arr)        {            for (int i = 0; i<arr.length; i++)            {                arr[i] = arr[i].multiply(new Fraction(2,1));            }            return arr;        }但這不是我的主要目標,我想遞歸地做,所以這是我的方法:public static Fraction[] mulAus(Fraction[] arr, int i)        {            if (i>= 0 && i<arr.length)            {                rekurMul(arr,i);                //return mulAus(rekurMul(arr,i-1));            }            return arr;        }        public static Fraction rekurMul(Fraction[] arr, int i)        {            if (i>= 0 && i<arr.length)            {                return arr[i].multiply(new Fraction(2,1));                return arr[i].multiply(new Fraction(2, 1)); // Does Not Work!!!            }            throw new IndexOutOfBoundsException();        }也許有人可以幫助我!感謝您的關注。
查看完整描述

2 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

假設您有一種multiplyBy(Fraction f)方法可以在您的Fraction課堂上正常工作。此外,迭代進行會更好(更具可讀性,節省更多時間和空間復雜性)。為了這個例子,我會這樣做:


首先定義:


private static boolean oneThirdIsPresent(Fraction[] arr){

    for (int i = 0; i < arr.length; i++) {

        if(arr[i].numerator == 1 && arr[i].denominator == 3) {

            return true;

        }

    }

    return false;

}


private static void recursivelyMultBy2(Fraction[] arr, int index){

    if(index == arr.length){

        return;

    }

    arr[index] = arr[index].multiplyBy(new Fraction(2));

    recursivelyMultBy2(arr, index+1);

}

為了最終解決:


public static void multBy2IfOneThirdIsPresent(Fraction[] arr){

    if(oneThirdIsPresent(arr)){

        recursivelyMultBy2(arr, 0);

    }else{

        return;

    }

}


查看完整回答
反對 回復 2022-12-21
?
蕭十郎

TA貢獻1815條經驗 獲得超13個贊

這是遞歸乘法部分的一個簡單示例:


public static void main(String[] args)

{

    Fraction[] fractions = new Fraction[] {new Fraction(1,2), new Fraction(2,3), new Fraction(3,1)};


    System.out.println("Fractions:");

    for(Fraction f: fractions)

    {

        System.out.println(f);

    }


    System.out.println("Multiplying array by 2...");

    Fraction.mulAus(fractions, new Fraction(2, 1));

    for(Fraction f: fractions)

    {

        System.out.println(f);

    }

}

Modified Fraction Class(乘法代碼在底部):


public class Fraction

{


        private int numerator;      // Zaehler

        private int denominator;    // Nenner


        public Fraction(int num, int denom)

        {

            if (denom != 0)

            {

                if (denom < 0)

                {

                    numerator = -num;

                    denominator = -denom;

                }

                else

                {

                    numerator = num;

                    denominator = denom;

                }

                reduce();

            }

            else

            {

                // error: division by zero

                //throw new IllegalArgumentException();

            }

        }


        private void reduce()

        {

            // ... 

        }


        public Fraction()

        {

            numerator = 0;

            denominator = 1;

        }


        public Fraction(int num)

        {

            numerator = num;

            denominator = 1;

        }


        public String toString()

        {

            return numerator + " / " + denominator;

        }


        public void MultiplyBy(Fraction F)

        {

            if (F != null)

            {

                numerator = numerator * F.numerator;

                denominator = denominator * F.denominator;

                reduce();

            }

        }


        public static void mulAus(Fraction[] arr, Fraction F)

        {

            if(arr != null && F != null)

            {

                rekurMul(arr, 0, F);

            }

        }


        private static void rekurMul(Fraction[] arr, int i, Fraction F)

        {

            arr[i].MultiplyBy(F);

            if (i < (arr.length - 1))

            {

                rekurMul(arr, ++i, F);

            }

        }


}

輸出:

http://img1.sycdn.imooc.com//63a2c7a6000185ce02730287.jpg

查看完整回答
反對 回復 2022-12-21
  • 2 回答
  • 0 關注
  • 104 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號