gpt4 book ai didi

c - 函数调用的最小深度

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:46 32 4
gpt4 key购买 nike

一个函数可以调用另一个函数这通常会增加一些开销,并可能导致堆栈溢出。
这样的限制使可移植性复杂化,那么标准是否要求函数调用链的最小可能深度?
澄清,假设

double fac(unsigned int n) {
return n == 0? 1: (double)n * fac(n - 1);
}

那么,在保证 n按预期运行的情况下, fac(n)是最大的可能输入?

最佳答案

ISO 9899:2011第5.2.4.1节中的标准保证:
1 该实现应能够翻译和执行至少一个程序,该程序包含以下每个限制的至少一个实例:18)
127块嵌套级别
...
有人可能会说这只意味着“一个函数中的嵌套块”,但我读到这篇文章时,当每个函数调用引入一个块时,127个嵌套函数调用也得到了保证(如果这些调用都不分配任何变量)。
然而,肯定有一些平台支持许多较少的嵌套级别。例如,一些MSP430微控制器具有128字节或更少的RAM。在这些函数中,不能支持超过64个嵌套级别,因为每个函数调用都需要存储一个两字节的返回地址。

关于c - 函数调用的最小深度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669105/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com