Java递归算阶乘?一行代码干翻数学老师,n!原来这么简单
2026/7/5 13:29:53 网站建设 项目流程

Java实现递归计算n的阶乘

更新时刻为, 二零二一年八月二十七日, 十三时三十九分零二秒, 作者名为, 这个对数不太对。

这篇文章为众人着重详尽介绍了, 借助Java达成递归, 去计算n的阶乘, 凭借递归的思维实现阶乘的计算, 文中给出的示例代码讲解得极为细致, 具备一定的参考意义, 感兴趣的小伙伴们能够参考一番。

此文的实例,给大伙分享了, 用Java达成递归算出n的阶乘的详尽代码, 用以供大伙去参考, 具体所含内容是这样的。

问题描述

利用递归的思想实现阶乘的计算,以 n!为例

(一)、n的范围

1.n2.n=0或n=1:n!=1

3.n>2:n!=n(n-1)!

关于 0!=1 的一个合理性解释:

根据阶乘的定义n!=n(n-1)!,

可变形为n=(n+1)!/(n+1),

带入有0=1!/1=1

(二)、问题分析

1.n

(1)在未知循环次数时,可以采用while语句来提醒

(2)while语句中用结束循环

while语句中break和的区别

(1)破出: 脱离这一层循环, 也就是在进入一回循环体之后, 执行完一回循环体内的语句, 之后便不再开展是否进入循环体的判定。

(2)从此次循环中跳脱出来, 也就是在进入一回循环结构内之后, 将一轮自循环开始直至结束这个过程里的所有语句执行完毕, 随后会再一次返回至循环的起始位置去考查是否要持续进入循环状态, 若判定为是, 则会接着重复上述过程, 像这样不断地循环往复。

由于不能确定用户输入有误的次数,所以要用

public static void main(String[] args) { int n; Scanner sc = new Scanner(System.in); System.out.println("请输入n的值"); n = sc.nextInt(); while(n<0) { System.out.println("输入有误,n要大于等于0哦"); System.out.println("请再次输入"); n = sc.nextInt(); continue; } }

2.n>=0时调用方法进行计算

(1)先新增一个类, 接着构造一个带有参数的方法, 拿来计算阶乘, 务必要注意, 此方法的名称不能够与最开始创立的类( class)相同。

(2)引用一个, 如果语句: 当, n等于0, 或者1的时候, 结果返回为1;其余的情况, n不等于n乘以, n减去1的阶乘。

(3)阶乘的思想在于递归, 也就是自身调用自身, 持续地将最新的n以n * (n - 1)去替换, 直至n等于1, 借此达成n!等于n(n - 1)(n - 2)···2·1这样的结果。

public static int recursion (int n) { if (n==0||n==1) return 1; else{ return n * recursion(n-1); } }

3.结果输出放在main()中

(1)正常基于方法常常被封装于另一个类当中的状况, 通常是先行着手实例化一个对象(), 随后借助该对象去调用该方法()

(2)被实例化的那个对象, 理当是属于最初那个类()的对象, 因而呈现为 = new ()。

(3)因为类里面仅可定义变量以及方法, 没法直接实例化出对象, 也不可以写单独的语句, 况且在编写类方法之际, 不能调用类自身(除非编写的是类当中的main方法), 故而这两行代码应当放置在main()方法里。

Recursion recursion1= new Recursion(); System.out.println("n!="+ recursion1.recursion(n));

(三)、完整代码

把以上代码合并一下

import java.util.*; public class Recursion { public static void main(String[] args) { int n; Scanner sc = new Scanner(System.in); System.out.println("请输入n的值"); n = sc.nextInt(); while(n<0) { System.out.println("输入有误,n要大于等于0哦"); System.out.println("请再次输入"); n = sc.nextInt(); continue; } Recursion recursion1= new Recursion(); System.out.println("n!="+ recursion1.recursion(n)); } public static int recursion (int n) { if (n==0||n==1) return 1; else{ return n * recursion(n-1); } } }

(四)、运行结果

综上所述, 这便是此篇文章的完整内容, 期望能给各位在学习方面带来助力, 同时也期盼各位能够给予脚本之家诸多支持。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询