【编程语言 · C语言 · 递归函数】

文章通过一个C语言代码示例解释了如何使用递归函数计算阶乘。递归函数在满足退出条件(num等于1)时停止调用自身,否则会继续调用以计算更小的阶乘值,最终得到结果。这种解决方案的关键在于必须有一个明确的退出条件以防止无限递归。
摘要由CSDN通过智能技术生成

递归函数

C 语言的函数都支持递归, 也就是说,每个函数都可以直接或者间接第调用自己。所谓的间接调用,是指在递归函数调用的下层函数中再调用自己。

递归关系图如下:

递归之所以能实现,是因为函数的每个执行过程在栈中都有自己的形参和局部变量的副本,这些副本和该函数的其他执行过程不发生关系。

考虑一个数字的阶乘,通常写为 5! = 5 * 4 * 3 * 2 * 1。

也可以将此计算视为重复计算num * (num -1),直到num为1。

递归函数是一个调用其自身的函数,它包括一个退出条件,用于结束递归调用。在计算阶乘时,退出条件为num等于1。

例如:

 

#include <stdio.h>

// 声明函数 factorial,用于计算阶乘

int factorial(int num);

int main() {

  int x = 5;

  printf("The factorial of %d is %d\n", x, factorial(x)); // 打印 x 的阶乘结果

  return 0;

}

// 定义函数 factorial,用于计算阶乘

int factorial(int num) {

  if (num == 1)  /* 基本情况,阶乘的终止条件 */

    return 1;

  else

    return (num * factorial(num - 1)); // 递归调用自身,计算 num 的阶乘

}

这段代码实现了以下功能:

  1. 引入头文件 stdio.h,其中包含了输入输出函数的定义。

  2. 声明函数 factorial,用于计算阶乘。

  3. main 函数中声明变量 x,初始值为 5。

  4. 使用 printf 函数打印出结果,显示 x 的阶乘结果。

  5. 返回 0,表示程序成功执行并退出。

函数 factorial 的功能是计算给定数字的阶乘。在函数体内,使用递归的方式进行计算。如果输入的数字 num 等于 1,表示已经到达阶乘的终止条件,直接返回 1。否则,将 numfactorial(num - 1) 相乘,即调用自身来计算 num - 1 的阶乘,并返回结果。

程序输出为:The factorial of 5 is 120

以上程序的执行过程拆解:

2*factorial(1)
3*factorial(2)
4*factorial(3)
5*factorial(4)

当达到退出条件时,返回值1触发堆叠调用的完成。

从最新到最旧的返回值创建以下计算,最后的计算(5 * 24)返回到调用函数main():

2 * 1
3 * 2
4 * 6
5 * 24

注意: 递归解决方案需要一个退出条件来防止无限循环。

【选词填空】定义用于计算n阶乘的递归函数:

int fact(int n) {
  if (n == 1)  1;
  return n * (n - 1);
}

n

break

fact

return

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

菜鸟程序员__

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

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

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

打赏作者

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

抵扣说明:

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

余额充值