递归调用C语言,c语言编写递归函数

  递归调用C语言,c语言编写递归函数

  递归算法具有易于编程的特点;但是,由于编译器预先分配的堆栈空间的限制,递归深度并不是无限的。

  在递归的过程中,系统会保存(推入堆栈)当前程序的运行状态,将参数推入堆栈,然后递归。

  递归完成后,进行堆栈操作。

  当递归深度较深时,递归无法继续,因为堆栈已满。

  那么,递归的深度是什么?如果我们在没有参数传递的情况下创建递归,是否会节省更多的内存,从而增加递归的深度?

  程序:测试C编译器的递归深度

  /*

  测试C语言的递归深度

  g结果:

  外宾:43273

  F1: 43273

  F2: 43266

  VC2012结果:

  外宾:85588

  F1:44998

  F2: 42773

  #包括iostream

  使用命名空间std

  int n;

  int times=0;

  void F()

  如果(n==1)

  返回;

  其他

  cout times endl

  n=n-1;

  f();

  void F1(整数n)

  如果(n==1)

  返回;

  其他

  cout times endl

  n=n-1;

  f1(n);

  typedef结构数据{

  int a,b;

  }数据;

  void F2(int n,Data data)

  如果(n==1)

  返回;

  其他

  cout times endl

  n=n-1;

  F2(n,数据);

  }

  从上面的程序来看,在一定的编译器和编译参数下,不同的参数传递方法似乎对递归深度没有太大的影响。

  问题:编译器是否限制了递归的深度?还是内存不够?

  结果:递归算法要慎用!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: