Java求阶乘和:1!+2!+3!+4!+...+n! |
您所在的位置:网站首页 › 用while循环求100以内的乘阶 › Java求阶乘和:1!+2!+3!+4!+...+n! |
求阶乘和:1!+2!+3!+4!+…+n!
写代码前
看到题目,一开始没思路不要慌~~~ 先思考,可以把想到的点子都记在本子上;串起来整合,再上手写代码,比直接就写理解更深刻;从而达到巩固知识,举一反三的效果。 说干就干 好,我们回归正题,题给要求很简单,求阶乘和。也就是说,我们先得拿到: 数字1-数字n 的阶乘,然后再把:n个数字的阶乘加起来,即得到结果;脑海里搜索回忆以及一番思考后,有三种方法可以解决这道题,以下都写成了方法(也就是函数)形式。 方法一:while循环【代码1】 import java.util.Scanner; public class myPractice { public static int facSum(int n) { int sum = 0; int i = 1; // 外层循环负责求阶乘的和 while (i facResult *= j; j++; } i++; sum += facResult; } return sum; } public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int ret = facSum(n); //方法一 System.out.println(n + " 的阶乘和为:" + ret); } } 方法二:for循环【代码2】 import java.util.Scanner; public class myPractice { public static int sumFac(int n) { int sum = 0; for (int i = 1; i ret *= j; // ret = ret * j; } sum += ret; // sum = sum + ret; } return sum; } public static void main(String[] args) { // m4 Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int ret = sumFac(n); //方法二 System.out.println(n + " 的阶乘和为:" + ret); } }在【代码2】里我们可以发现,while循环 逻辑和 for循环 很相似,但就结构上来说,显而易见 for循环 要更清晰和简洁一些。 方法三:递归【代码3】 import java.util.Scanner; public class myPractice { public static int fac(int n) { //求阶乘 if (n == 1) { return 1; } return n * fac(n - 1); } public static int sum(int n) { //求阶乘和 if (n == 1) { return 1; } return fac(n) + sum(n-1); } public static void main(String[] args) { // m4 Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int ret = sum(n); //方法三 System.out.println(n + " 的阶乘和为:" + ret); } }借助下图可更好地理解 递归求阶乘和,以 n = 3 为例。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |