[英]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.