阶乘
n! = 1×2×3×...×n
3!=6
写一个用户输n,计算出n!的程序
怎么写程序:
1.想要表达的数据(n和结果)
2.计算
3.计算途中需要的变量++
表达累积结果初始化为1,不然=0
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int i = 1;
int factor = 1;
while (i<=n)
{
factor = factor * i;
i = i + 1;
}
System.out.println(factor);
}
}
输入20
20
-2102132736
不能算大阶乘
因:int占4字节,最大表示2的31次方-1,最小表示-2的31次方
引入for循环
// while (i<=n)
// {
// factor = factor * i;
// i = i + 1;
// }
// 初始化(第一轮之后不做;条件;循环体做完之后再做)
for ( i=1;i<=n;i = i+1)
{
factor = factor * i;
}
1.在循环开始前判断条件
2.像计数循环
3.第一部分是初始化,可定义新变量或赋值
4.第二部分是和while一样的条件
5.第三部分是执行循环体后执行的表达式,通常用来改变循环变量
6.for程序语义
for ( i=1;i<=n;i = i+1)
对于一开始的
i=1
当
i<=n
时,
重复做循环体,每轮做完之后,使
i = i+1
修改后程序
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int factor = 1;
for ( int i=1;i<=n;i = i+1)
{
factor = factor * i;
}
System.out.println(factor);
}
}
留意:
1.for循环和while循环可互换
2.for除条件其他都可以省略
for(;条件;)==while(条件)
3.for后和if一样不要分号;
4.for要{}
5.这样循环次数是n
for ( int i=0;i<=n;i = i+1)
选择for while 还是do-while循环
1.如果有固定次数,用for
2.必须执行一次,用do-while
3.其他情况while