Java-阶乘
我正在打印前10个数字的阶乘,所以它是0-9。下面的代码适用于我。但是我无法使循环中的阶乘0也在循环中。任何建议都将不胜感激。多谢各位Java-阶乘,java,Java,我正在打印前10个数字的阶乘,所以它是0-9。下面的代码适用于我。但是我无法使循环中的阶乘0也在循环中。任何建议都将不胜感激。多谢各位 public class fact { public static void main(String[] args) { System.out.println("\n\n(f) Loop to print first 10 factorial numbers"); System.out.println("\nFact
public class fact {
public static void main(String[] args) {
System.out.println("\n\n(f) Loop to print first 10 factorial numbers");
System.out.println("\nFactorial of 0 is 1");
int fact = 1;
int index = 1;
while (index < 10)
{
fact*=index;
System.out.println("Factorial of " + index + " is " + fact);
index++;
}
}
}
公共类事实{
公共静态void main(字符串[]args){
System.out.println(“\n\n(f)循环以打印前10个阶乘数”);
System.out.println(“\n 0的工厂为1”);
int-fact=1;
int指数=1;
而(指数<10)
{
事实*=指数;
System.out.println(““+index+”的阶乘是“+fact”);
索引++;
}
}
}
在索引0的循环中添加if
条件如何
int fact = 1;
int index = 0;
while (index < 10)
{
if(index == 0)
System.out.println("\nFactorial of 0 is 1");
else {
fact*=index;
System.out.println("Factorial of " + index + " is " + fact);
}
index++;
}
int-fact=1;
int指数=0;
而(指数<10)
{
如果(索引==0)
System.out.println(“\n 0的工厂为1”);
否则{
事实*=指数;
System.out.println(““+index+”的阶乘是“+fact”);
}
索引++;
}
0的阶乘是一种特殊情况,因此最好像现在这样在循环外打印它。您可以这样做
int fact = 1;
int index = 0;
while (index < 10)
{
fact=(index==0)?1:fact*(index);
System.out.println("Factorial of " + index + " is " + fact);
index++;
}
int-fact=1;
int指数=0;
而(指数<10)
{
事实=(索引==0)?1:事实*(索引);
System.out.println(““+index+”的阶乘是“+fact”);
索引++;
}
Fn调用的效率不如循环,但我敢打赌,在这种规模的任务中,它将被优化为~相同。对于大n个数字,查找阶乘及其数字计数
import java.util.Scanner;
public class N_Faktorial {
public static void main(String [] args)
{
int u=1,A[]=new int[9999999];
Scanner scan =new Scanner(System.in);
System.out.print("n=");
int n=scan.nextInt();
A[1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) {
A[j]*=i;
}
for(int j=1;j<=n;j++)
{
if(A[j]>9)
{
A[j+1]+=A[j]/10;
A[j]%=10;
}
if(A[u+1]!=0) {
u++;
}
}
}
System.out.print(n+"! digit count:"+u+"\\n Result: \\n");
for(int i=u;i>=1;i--)
{
System.out.print(A[i]);
}
}
}
import java.util.Scanner;
公共类杂志{
公共静态void main(字符串[]args)
{
int u=1,A[]=new int[999999];
扫描仪扫描=新扫描仪(System.in);
系统输出打印(“n=”);
int n=scan.nextInt();
A[1]=1;
对于(int i=1;iyeaaah,无限循环!将index++
移到if/else之外statement@ZouZou谢谢移动它!为什么不简单地fact=(index==0)?1:fact*(index)
?ty,修复了。使用Scala几个月后,我一直忘了这些^^^^我想我可以在那里压缩带有累加器的helper,使其尾部递归…在java中没有意义,只是为了外观。
import java.util.Scanner;
public class N_Faktorial {
public static void main(String [] args)
{
int u=1,A[]=new int[9999999];
Scanner scan =new Scanner(System.in);
System.out.print("n=");
int n=scan.nextInt();
A[1]=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) {
A[j]*=i;
}
for(int j=1;j<=n;j++)
{
if(A[j]>9)
{
A[j+1]+=A[j]/10;
A[j]%=10;
}
if(A[u+1]!=0) {
u++;
}
}
}
System.out.print(n+"! digit count:"+u+"\\n Result: \\n");
for(int i=u;i>=1;i--)
{
System.out.print(A[i]);
}
}
}