zoukankan      html  css  js  c++  java
  • c语言函数最大能递归的次数多少

    date 2020/3/24

    int main(){
    main();
    }
    

    这是一小段c代码,但是,main函数不能被除系统之外的东西调用,这属于UB行为
    它如何运行完全靠编译器,所以我不会这样写。

    #include <stdio.h>
    void Main(unsigned long long t);
    int main()
    {
    Main(0);
    }
    void Main(unsigned long long t)
    {printf("第%llu次递归
    ",t);Main(++t);
    }
    

    这样写才不会被编译器报UB行为。




    运行这段代码

    显然,我们可以得到c语言函数最大能递归的次数是43179
    但是请注意右角的程序异常返回值

    程序异常退出了。

    再用 www.onlinegdb.com 运行一下代码
    神奇的事情发生了:

    相同的代码,运行结果竟然是不同的。
    从异常返回值我们可以推断,程序堆栈溢出了。
    得出结论:
    不同的系统,程序堆栈大小不同,可递归的次数也就不同,c语言函数最大能递归的次数是未知的。
    而C语言本身没有限制。

  • 相关阅读:
    工作的开端五
    工作的开端一
    工作的开端四
    工作的开端三
    工作的开端二
    springMVC基础配置
    3
    2
    文件操作Utils方法1
    解压zip并解析excel
  • 原文地址:https://www.cnblogs.com/obj-a/p/c-language-maximum-number-of-recursion.html
Copyright © 2011-2022 走看看