[其它应用] C语言的递归

[复制链接]
1840|9
 楼主| LOVEEVER 发表于 2023-11-7 19:17 | 显示全部楼层 |阅读模式
什么是递归?
要说到递归如果不说栈的话,我觉得有点不合适,递归特点就是不断的调用同一个函数,如果这个函数没有一个递归界限,那么就是死循环了。所以讨论递归,就必须要讨论递归的界限,就是限定这个递归调用多少次。

我们先来看一个例子:
  1. #include "stdio.h"

  2. int digui(unsigned long count )
  3. {
  4.         if(count > 0){
  5.                 count --;
  6.                 printf("%d \n",count);
  7.                 digui(count);
  8.         }
  9.         return 1;
  10. }

  11. int main()
  12. {
  13.         digui(10);
  14.         return (100);
  15. }
这个递归函数的限定判读是:
if(count > 0);

所以,它的调用顺序可以用下面这个图示来说明:


这个过程叫做递去,也就是压栈的过程,既然有压栈的过程,那么就有出栈的过程,出栈的过程就是:

if(count > 0)

判断不成功后,就会出栈了,如下图所示:

总的来说递归就是不断地压栈和出栈的过程,现在大家对递归的原理有深入的理解了吧!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
AdaMaYun 发表于 2023-11-7 19:44 | 显示全部楼层
大概了解堆栈以及递归的关系了
OKAKAKO 发表于 2023-11-7 19:49 | 显示全部楼层
如果这个函数没有一个递归界限,那么就是死循环,死循环有啥危害呢
中国龙芯CDX 发表于 2023-11-7 19:53 | 显示全部楼层
递归的底层其实就是执行的堆栈过程
小夏天的大西瓜 发表于 2023-11-7 19:55 | 显示全部楼层
digui(10 )这个函数就是递归函数吧
小小蚂蚁举千斤 发表于 2023-11-7 19:59 | 显示全部楼层
digui(10 )这个应该是调用函数10次
星辰大海不退缩 发表于 2023-11-7 20:02 | 显示全部楼层
C语言递归跟堆栈数量有关系
szt1993 发表于 2023-11-7 22:00 | 显示全部楼层
递归的界限是如何规定的呢
szt1993 发表于 2023-11-7 22:00 | 显示全部楼层
递归的界限是如何规定的呢
jf101 发表于 2023-11-8 20:34 | 显示全部楼层
szt1993 发表于 2023-11-7 22:00
递归的界限是如何规定的呢

因该是跟指针堆栈有关系
您需要登录后才可以回帖 登录 | 注册

本版积分规则

353

主题

2854

帖子

8

粉丝
快速回复 在线客服 返回列表 返回顶部