利用递归求阶乘!

本文档详细介绍了如何使用Python的递归函数计算阶乘,并强调了当输入值超过整数类型字节存储范围时的注意事项。通过实例演示了计算10的阶乘的过程。

代码如下:

public static void main(String[] args) {
       
        int  s=10;//切记s的最大值只能取道15,大于15的阶乘
        // 会超出最大整数类型字节的存储范围
        var as =  dgpx(s);
      
        System.out.print("您想求的数字为"+s);
        System.out.println();
        System.out.printf("%d的阶乘为%d",s,as);
    }

    public static int dgpx(int   n){
        if( n==1){
          return 1;

        }else{

            return  n*dgpx(n-1);
        }
    }

运行结果如下:

 


利用递归阶乘是经典的递归入门问题。阶乘的定义是: - $ n! = n \times (n-1) \times (n-2) \times \cdots \times 1 $ - 特别地,$ 0! = 1 $ 根据这个定义,我们可以写出递归公式: - 当 $ n = 0 $ 或 $ n = 1 $ 时,返回 1 - 否则,$ n! = n \times (n-1)! $ 以下是使用 C++ 实现的递归阶乘代码: ```cpp #include <iostream> using namespace std; // 递归函数:计算 n 的阶乘 long long factorial(int n) { // 基础情况:0! 和 1! 都是 1 if (n == 0 || n == 1) { return 1; } // 递归情况:n! = n * (n-1)! else { return n * factorial(n - 1); } } int main() { int n; cout << "请输入一个非负整数: "; cin >> n; if (n < 0) { cout << "错误:阶乘不定义负数!" << endl; } else { cout << n << "! = " << factorial(n) << endl; } return 0; } ``` ### 解释: - `factorial` 函数是一个典型的递归函数: - **终止条件(base case)**:当 `n == 0` 或 `n == 1` 时返回 1,防止无限递归。 - **递归调用(recursive call)**:`return n * factorial(n - 1);` 表示当前问题分解为更小的子问题。 - 使用了 `long long` 类型来尽可能支持较大的阶乘结果(但注意仍会溢出,例如 21! 就可能超出 `long long` 范围)。 - 主函数中加入了输入验证,确保用户输入的是非负整数。 ⚠️ 注意:该实现未处理大数溢出问题。若需计算更大的阶乘(如 50!),需要使用高精度整数(如数组或 `boost::multiprecision` 库)。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值