21xrx.com
2024-12-22 22:43:14 Sunday
登录
文章检索 我的文章 写文章
【教程】用C语言递归求阶乘
2023-06-15 19:39:38 深夜i     --     --
递归 阶乘 C语言 函数 循环 栈溢出

阶乘是一个常见的数学运算,它表示一个正整数n及其前面所有正整数的乘积,通常用符号“!”表示,例如3!=3x2x1=6。在C语言中,我们可以使用循环语句来计算n的阶乘,但是也可以使用递归函数来实现。本教程将介绍如何使用递归函数来求解阶乘。

首先,我们需要定义递归函数fact,该函数接受一个整数参数n,并返回n的阶乘。函数实现如下:


int fact(int n) {

  if (n == 1)

    return 1;

   else {

    return n * fact(n - 1);

  }

}

该函数的递归思想是,当n等于1时,返回1;当n大于1时,返回n乘以n-1的阶乘,即fact(n-1)。当n不断减小,递归函数会一直执行,直到n等于1时停止执行。

接下来,我们可以在主函数中调用该递归函数,并输出结果,代码如下:


#include

int fact(int n);

int main() {

  int n, res;

  printf("请输入一个正整数:");

  scanf("%d", &n);

  res = fact(n);

  printf("%d的阶乘是%d\n", n, res);

  return 0;

}

int fact(int n) {

  if (n == 1)

    return 1;

   else {

    return n * fact(n - 1);

  }

}

在输入一个正整数后,程序会计算该正整数的阶乘,并输出结果。

本教程使用了递归函数来计算n的阶乘,体现了递归函数的优美与简洁。在实际开发中,递归函数要注意递归深度过大导致栈溢出的问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复