簡體   English   中英

編寫遞歸方法來查找傳入數字的質因數

[英]Writing a recursive method to find the prime factors of a number that is passed in

我必須編寫一個遞歸方法來查找傳入的數字的質因數。質因數應以字符串形式返回,其中質數因數用空格分隔,並按從小到大、從左到右的順序排列。 如果傳入的數字是質數,則應返回字符串“Prime”。 我給程序以下輸入

FindPrime p10 = new FindPrime(408);

我應該得到:2x2x2x3x17 但 output 是:

2x2x2x3x4x4xprime number

這是我編寫的程序

public class FindPrime{
public int div = 2;

public FindPrime(int i) {
    System.out.println(i + " factorization:");
    findPrime(i);
    System.out.println();
}

public void findPrime(int num) {
    if(num == 1) {
        System.out.println("prime number");
        return;
    }
    else if(num % div == 0) {
        System.out.print(div + "x");
        findPrime(num/div);
    }
    else {
        div++;
        System.out.print(div + "x");
        findPrime(num/div);
        
    }       
}

}

有人可以幫忙嗎? 我不知道 go 還能去哪里

那是因為:
首先,else語句中,為什么要除?( findPrime(num/div); )
其次,不知道if(num == 1)是什么意思
所以這應該是這樣的:

    public int div = 2;
    public void FindPrime(int i) {
        System.out.println(i + " factorization:");
        findPrime(i);
        System.out.println();
    }

    public void findPrime(int num) {
        if(div == num) {// it's the base case
            System.out.print(div);
        }
        else if(num % div == 0) {
            System.out.print(div + "x");
            findPrime(num/div);
        }
        else {
            div++;
            //System.out.print(div + "x");// Why are you sure that it's going to divide?
            findPrime(num);//you pass in the number, not divide then pass it in
            
        }       
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM