Java求阶乘和:1!+2!+3!+4!+...+n!

您所在的位置:网站首页 用while循环求100以内的乘阶 Java求阶乘和:1!+2!+3!+4!+...+n!

Java求阶乘和:1!+2!+3!+4!+...+n!

2024-05-23 23:06| 来源: 网络整理| 查看: 265

求阶乘和: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 为例。 在这里插入图片描述

最终小结 孔子曰:吾日三省吾身、温故而知新。写代码也是,每学一点,巩固之前学过、写过、看过的代码,每当我学习新知识卡住的时候,我往往会回顾一下之前学过得相关的知识,这样,往往会有一些新的理解,我认为这是一个不错的办法。BUT,有时候这个过程呢,往往有点煎熬。。以及枯燥=^=正所谓:代码虐我千百遍,我待代码如初恋~~加油!奥利给!


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3