遞歸地寫這個更優雅的方法嗎?阿姆斯特朗編號遞歸地生成阿姆斯壯數字的更好方法
PS:已經失學15年了,這不是作業,只是我試圖從迭代轉換爲遞歸的一些代碼。
import java.util.Scanner;
public class RecArmstrong {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter a number: ");
int number = keyboard.nextInt();
//Error checking
while(number < 0 || number > 100000){
System.out.print("Enter a number: ");
number = keyboard.nextInt();
}
if(arm(number) == number)
System.out.println(number + " is an armstrong number");
else
System.out.println(number + " is not an armstrong number.");
}
public static long arm(long n){
long temp, sum, digits = 0;
long remainder;
temp = n;
sum = 0;
if (temp == 0)
return 0; //base case
else{
while (temp != 0){
digits++; //number of digits for exponent
temp = temp/10;
}
temp = n; //set temp back to original number
while (temp != 0){
remainder = temp % 10;
sum += Math.pow(remainder, digits);
temp = temp/10;
}
return sum + arm(temp);
}
}
}
這看起來很好 – 2012-07-28 23:10:58
我同意,我看不出有什麼明顯的問題... – sbrichards 2012-07-28 23:12:33
這是對的做法呢?否則,通常迭代解決方案效率更高,因此沒有理由這樣做。 – Jochen 2012-07-28 23:25:04