函数递归深入解析(C语言)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析DNS,个人版 1个月
简介: 函数递归深入解析(C语言)


学习目标:

1.什么是递归

2.限制条件

3.递归与迭代

什么是递归

 在C语言中,递归就是函数自己调用自己

如:

#include<stdio.h>
int main()
{
  printf("hehe\n");
  main();
  return 0;
}

这个代码是死循环的,只是为了更加了解一些。

递归就是把一个大的问题转化成相似问题,直到这个小问题不能再拆分。


递归的限制条件

 举例:求n的阶乘

n!=n*(n-1)!

(n-1)!=(n-1)*(n-2)!

....

直到n=1或者0的时候,不再拆分

代码实现:

#include<stdio.h>
int fit(int n)
{
  if (n <= 0)
    return 1;
  else
    return n * fit(n - 1);
}
int main()
{
  int n = 0;
  scanf("%d", &n);
  int ret = fit(n);
  printf("%d", ret);
  return 0;
}

递归可以理解成递推回归,先递推完,然后返回回归。

递归与迭代(循坏)

 在C语言中,有时候递归会被误用,就比如上面这个代码,当输入的n的值很大的时候,就会导致溢出,导致运行不下去。

如果采用迭代的话,代码如下

#include<stdio.h>
int main()
{
  int n = 0;
  scanf("%d", &n);
  int i = 0;
  int sum = 1;
  for (i = 1; i <= n; i++)
  {
    sum = sum * i;
    printf("%d\n", sum);
  }
  return 0;
}

这个代码比递归更为有效,并且容易想到。

 

 

 

 


相关文章
|
6天前
|
存储 C语言
【C语言函数】static和extern关键字修饰
【C语言函数】static和extern关键字修饰
|
6天前
|
C语言 C++
|
7天前
|
机器学习/深度学习 人工智能 PyTorch
掌握 PyTorch 张量乘法:八个关键函数与应用场景对比解析
PyTorch提供了几种张量乘法的方法,每种方法都是不同的,并且有不同的应用。我们来详细介绍每个方法,并且详细解释这些函数有什么区别:
17 4
掌握 PyTorch 张量乘法:八个关键函数与应用场景对比解析
|
3天前
|
测试技术 C语言
C语言中的void函数
C语言中的void函数
|
3天前
|
存储 安全 编译器
C语言中的scanf函数
C语言中的scanf函数
|
3天前
|
存储 搜索推荐 C语言
C语言中的指针函数:深入探索与应用
C语言中的指针函数:深入探索与应用
|
3天前
|
C语言
C语言中的无参函数
C语言中的无参函数
|
6天前
|
C语言
C语言中的递归
C语言中的递归
|
6天前
|
C语言
C语言------函数
这篇文章是C语言中函数的实训,涵盖了函数的定义、调用、自定义函数编写以及递归调用方法,并通过多个示例代码演示了如何实现累加、阶乘、斐波那契数列、特殊数列求和等函数功能。
C语言------函数
|
6天前
|
编译器 C语言
【C语言小知识】ctype.h系列的字符函数
【C语言小知识】ctype.h系列的字符函数

推荐镜像

更多