我对编程比较陌生,但我正在尝试编写一个程序,将数字从基数10转换为阶乘基数,以帮助我解决更具挑战性的问题。因子基数代表一个数作为阶乘的总和;例如,19(基数10)= 301(基因子),因为3 * 3!+ 0 * 2!+ 1 * 1!= 19。你可以在http://en.wikipedia.org/wiki/Factorial_number_system找到比我更好的解释。对于您可以输入的数字,最简单的方法是什么?到目前为止,我已经能够简单地打印每个小于10的数字的阶乘:
for (int base = 1; base < 10; base++){
int factorial = 1;
for (int i = 1; i < base; i++){
factorial = factorial*i;}
System.out.println(factorial);}
我确信我犯了很多初学者的错误;但我非常感谢你能给我的任何帮助。感谢您的时间,以及您可以提供的任何帮助。
答案 0 :(得分:1)
for (int base = 1; base < 10; base++);{
for语句和open括号之间不应该有分号。编译器将其解释为您的意思
for (...) { /* empty block */ }
{ // new, unrelated block
...
}
对于实际实施,您可以查看维基百科文章:
例如,可以将数字转换为阶乘表示 通过重复划分数字,从右到左生成数字 通过位置值(1,2,3,...),将余数作为数字, 并继续使用整数商,直到该商变为 0
所以像(未经测试,伪装)......
int number = 463;
int radix = 1;
String result = ""; // prob use int[] or list in real life?
while (number > 0) {
int div = number / radix;
int remainder = number % radix;
result = remainder + result;
number = div;
++radix;
}
答案 1 :(得分:1)
试试这个
public int convertToFactorial(int x10){
int length = String.valueOf(x10).length();
String[] vals = String.valueOf(x10).split("");
int result = 0;
for (int base = 1; base < length + 1; base++){
int factorial = 1;
for (int i = vals.length - base; i > 0; i--){
factorial = factorial*i;
}
result += Integer.parseInt(vals[base]) * factorial;
}
System.out.println(result);
return result;
}
P.S。看看java代码约定蚂蚁语言结构,你不应该写;循环后防御。