当前位置: 首页 > article >正文

c题目16:写一个递归函数,计算N阶乘

每日小语

一生中,最光辉的一天并非功成名就的那一天,而是从悲叹与绝望中产生对人生挑战与勇敢迈向意志的那一天。——福楼拜

自己思考

这个小语呢,我目前还达不到,只是顺其自然,很多东西做起来很有动力,因为它让我感到热情澎湃。

写这篇文章也是,不管怎么说,突然有了一种想要让老师布置很多题目的冲动,也很想通过自己的双手把它们一一实现。

嗯,那我们开始吧。

这个也较为简单啦。

阶乘是什么?

阶乘是一个数学运算符,表示将一个正整数 n 及其之前所有的正整数相乘,记作 n!。阶乘的定义如下:

n! = n × (n - 1) × (n - 2) × ... × 2 × 1

例如,5! = 5 × 4 × 3 × 2 × 1 = 120。

在计算机编程中,阶乘通常可以通过循环或递归的方式来求解。使用循环时,可以从 1 或 n 开始迭代运算,依次相乘;而使用递归时,需要定义递归函数的基本情况和递归调用的方式。

#include <stdio.h>

int jiecheng(int n) {
    if (n == 0)
        return 0;
    else if (n == 1)
        return 1;
    else
        return jiecheng(n)*jiecheng(n-1);
}

int main() {
    int n, result;
    printf("输入一个数:");
    scanf("%d", &n);
    result = jiecheng(n);
    printf("答案是 %d :%d\n", n, result);
    return 0;
}

这个还是有问题。递归函数 jiecheng 中的基本情况修正为,当 n 为 0 或 1 时,返回 1 而不是 0。因为阶乘的定义中,0 的阶乘定义为 1。在递归调用中,使用 n * jiecheng(n - 1) 的方式计算 n 的阶乘。

为什么不是 jiecheng(n)*jiecheng(n-1);?

gpt没有告诉我

基本情况是当 n 为 0 或 1 时,直接返回 1。否则,递归调用 jiecheng(n - 1) 来计算 n-1 的阶乘,然后将结果与 n 相乘得到 n 的阶乘。

最后代码

#include <stdio.h>

int jiecheng(int n) {
    if (n == 0 || n == 1)
        return 1;//为0时也默认为1
    else
        return n*jiecheng(n-1);//为什么?
}

int main() {
    int n, result;
    printf("输入一个数:");
    scanf("%d", &n);
    result = jiecheng(n);
    printf("答案是 %d :%d\n", n, result);
    return 0;
}

那先这样吧,撒花花


http://www.kler.cn/a/158477.html

相关文章:

  • Docker入门之Windows安装Docker初体验
  • MySQL安装及数据库基础
  • CC工具箱使用指南:【CAD导出界址点Excel】
  • sqli—labs靶场 5-8关 (每日4关练习)持续更新!!!
  • Spark:大数据处理的强大引擎
  • 网页作业9
  • 智能优化算法应用:基于类电磁机制算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 用友U8 Cloud RegisterServlet SQL注入漏洞复现
  • 高低压供配电智能监控系统
  • ARM64安全特性之CET
  • java连接池 理解及解释(DBCP、druid、c3p0、HikariCP)
  • Debian 终端Shell命令行长路径改为短路径
  • 【Maven】更新依赖索引
  • LeetCode-478. 在圆内随机生成点【几何 数学 拒绝采样 随机化】
  • 深入浅出 Linux 中的 ARM IOMMU SMMU III
  • 【Python函数】魔法函数
  • 如何写一个吸引人的标题?
  • copilot的使用
  • 钉钉员工组织资料实时同步至飞书的应用解析
  • C#Backgroundworker与Thread的区别
  • 解决ssr服务端渲染程序启动报错: ReferenceError: location is not defined
  • minio配置监听(对象操作日志)
  • 连接池 Druid (四) - 连接归还
  • Vue3 pinia的基本使用
  • Squid安装与配置(ip代理)
  • leetcode面试经典150题——33 最小覆盖子串(滑动窗口)