题目要求
求 1~n 数字的阶乘和,n为键盘输入的数字
需要掌握的知识
键盘输入技术
2.方法的定义和调用
实现思路
四种方式:
(一)
两种方法
1.定义一个方法,方法里面使用一个循环,在调用时再使用一个循环反复调用
2.定义两个方法,在一个方法里面再调用另一个方法(比较推荐)
(二)
两种嵌套循环
循环
循环
实现代码
(一)两种方法
//法1
import java.util.Scanner;
public class Main {
public static int factorial(int x){//factorial:阶乘
int product = 1;//乘积
for (int i = 1; i <= x ; i++) {
product = product * i;
}
return product;
}
public static void main(String[] args) {
int sum = 0;//阶乘和
Scanner s = new Scanner(System.in);
System.out.print("请输入一个数字:");
int n = s.nextInt();
for (int i = 1; i <= n ; i++) {//依次传递数字 1 ~ n,反复调用
sum+=factorial(i);
}
System.out.println("1~"+n+"的阶乘和为:"+sum);
}
}
//法2
import java.util.Scanner;
public class Main {
public static int facSum(int x){
int sum =0;
int m = x;
for (int i = 0; i < m; i++) {//不能直接i<x,不然x-1时for的循环次数会变化
sum += fac(x);
x-=1;
}
return sum;
}
public static int fac(int x){
if(x==1){
return 1;
}
return x*fac(x-1);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请您输入一个数字:");
int n = sc.nextInt();
System.out.println("1~"+n+"的阶乘和为:"+facSum(n));
}
}
(二)两种嵌套循环
// 嵌套循环 1
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.print("请输入一个数字:");
int n = s.nextInt();
int sum = 0;//阶乘和
for (int i = 1; i <= n; i++) {
int product = 1;//乘积
for (int j = 1; j <= i ; j++) {
product*=j;
}
sum+=product;
}
System.out.println("1~"+n+"的阶乘和为:"+sum);
}
}
// 嵌套循环 2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("请输入一个数字:");
int n = s.nextInt();
int i = 1;
int sum = 0;//阶乘和
while(i <= n){
//j 和 product都不能在while外部定义,否则下次循环会使用上次循环计算后的值
int j = 1;
int product = 1;//乘积
while(j <= i){
product*=j;
j++;
}
sum+=product;
i++;
}
System.out.println("1~"+n+"的阶乘和为:"+sum);
}
}
输出结果
请输入一个数字:5
1~5的阶乘和为:153
请输入一个数字:6
1~6的阶乘和为:873
觉得写的不错的话就点个赞呗????