class Program

    {

        static void Main(string[] args)

        {

            sub(0);

        }

 

 

        private static void sub(int count)

        {

            if (count > 100000)

                return;

 

            Console.WriteLine(count);

 

            sub(++count);

        }

    }

C#的错误

 

 

void sub(int i)

{

    if (i > 10000)

        return;

 

    printf("%d\r\n", i);

 

    sub(++i);

}

int _tmain(int argc, _TCHAR* argv[])

{

    sub(0);

    return 0;

}

C++的错误

 

分析一下就大概明白了,由于递归数据放在栈里,递归不断的压栈,.NET framework Runtime 就抛出异常。 C++ 也是同样的问题,以后对于可预知的递归可以用,对于不可预知的就不要用了。

 

 

参见:

http://baike.soso.com/v111972.htm

 

注意:

(1) 递归就是在过程或函数里调用自身;

(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

递归算法一般用于解决三类问题:

(1)数据的定义是按递归定义的。(Fibonacci函数)

(2)问题解法按递归算法实现。(回溯)

(3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)

递归的缺点:

递归算法解题的运行效率较低。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。

最新文章

  1. x
  2. USACO翻译:USACO 2013 DEC Silver三题
  3. 自制Unity小游戏TankHero-2D(3)开始玩起来
  4. Servlet部分细节介绍
  5. UE4 性能优化方法(工具篇)
  6. 安装nfs服务器
  7. SVN与TortoiseSVN实战:冲突详解(二)
  8. Sublime Text 2 常用快捷键
  9. delphi 基础之二 面向对象概念初步
  10. IOS 关于ipad iphone5s崩溃 解决
  11. bzoj1486
  12. android 根据网络来获取外网ip地址及国家,地区的接口
  13. 程序ajax请求公共组件-- app-jquery-http.js
  14. 201521123098 《Java程序设计》 第5周学习总结
  15. Git之(四)分支管理
  16. 索引-mysql
  17. JavaEE 要懂的小事:一、图解Http协议
  18. luogu1608 路径统计 (spfa)
  19. python自动化开发-[第十三天]-javascript
  20. 剑指Offer_编程题_9

热门文章

  1. Holding Bin-Laden Captive!
  2. java中的报错机制
  3. angular与avalon对复杂对象的修改
  4. 浅谈PL/SQL语言基础
  5. C#使用ADO操作Excel
  6. SpringMVC+springSecurity+flexPaper 配置--类似百度文库在线预览
  7. ionic中的后退方法
  8. Druid配置属性列表及含义
  9. RichEdit在Win8上乱码
  10. SpringMVC——映射请求参数