• 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语言本身没有限制。

  • 相关阅读:
    select下拉框运用
    oracleINS-13001 环境不满足最低要求
    组成原理-存储器
    操作系统-- 存储器
    组成原理-CPU
    计算机网络-tcp-ip
    操作系统-处理机
    数据链路层~计算机网络
    物理层--计算机网络
    JavaScript-轮播2
  • 原文地址:https://www.cnblogs.com/obj-a/p/c-language-maximum-number-of-recursion.html
Copyright © 2020-2023  润新知