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;
}

那先这样吧,撒花花

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值