Java 使用递归方式求n的阶乘

本文介绍了递归的基本概念及其实现方式,通过一个简单的阶乘函数示例,展示了递归算法的魅力。同时,提到了大学算法课程中常见的斐波那契数列问题,作为递归应用的一个经典案例。

看到这道题目,我们就得首先需要知道,递归这个概念。递归指的是在函数的定义中使用函数自身的方法。至于n的阶乘,就回去翻翻九年义务教育的课本吧。话不多说,咱们就卷起袖子撸它吧。

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

怎么样,是不是很简单?就想问你们服不服,哈哈😄。
其实在大学课程的算法课里有相关讲解。如果没记错的话,应该是叫Fabonaci(斐波那契)算法,所涉及的内容就是递归方面的,有兴趣研究算法的同学,可以去研究一下。这是很经典的算法。

Java使用递归算法 n 的阶乘,基本思路是利用阶乘的定义:`n! = n * (n - 1)!`,当 `n` 为 0 或 1 时,`n!` 等于 1,这是递归的终止条件。以下是几种不同的实现示例: ### 示例一 ```java public class Factorial { public static int factorial(int n) { // 基本情况:n 为 0 或 1 时,阶乘结果为 1 if (n == 0 || n == 1) { return 1; } // 递归调用:n 乘以 (n - 1) 的阶乘 return n * factorial(n - 1); } public static void main(String[] args) { int n = 5; int result = factorial(n); System.out.println("阶乘结果:" + result); } } ``` 此示例中,定义了 `factorial` 方法用于计算阶乘,在 `main` 方法中调用该方法计算 5 的阶乘并输出结果 [^1]。 ### 示例二 ```java public class N { // n 的阶乘的算法:n*(n - 1)*(n - 2)… *1 public int factorial(int n) { if (n == 1 || n == 0) { return 1; } else { return n * factorial(n - 1); } } public static void main(String[] args) { N test = new N(); // 假如计算 8 的阶乘,直接输入 System.out.println(test.factorial(8)); } } ``` 该示例创建了 `N` 类,其中 `factorial` 方法实现了阶乘递归计算,在 `main` 方法中创建对象并调用该方法计算 8 的阶乘 [^2]。 ### 示例三 ```java import java.util.Scanner; public class Test { public static void main(String args[]) { Scanner in = new Scanner(System.in); // 需要通过 Scanner 类来获取用户的输入 System.out.print("请输入 n 的值: "); int n = in.nextInt(); // 输入 n 的值 int sum = fun(n); // 调用自定义函数 System.out.println(n + " 的阶乘为: " + sum); } /** * 自定义递归函数 */ public static int fun(int n) { if (n == 1) { return 1; } else { return n * fun(n - 1); } } } ``` 此示例通过 `Scanner` 类获取用户输入的 `n` 值,调用 `fun` 方法计算阶乘并输出结果 [^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐先生Paul

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值