Recursion 递归中的堆栈内存分配
我被要求写一个没有边界条件的递归函数。然后,有人问我,是否有可能将内存分配绑定到正在创建的堆栈,以便计算机不会挂起。如果是,那么如何进行?2个假设。没有边界条件意味着无限递归。计算机挂起意味着堆栈溢出或应用程序崩溃。当你们给CPU无限循环工作时,计算机总是挂起 没有正在创建的堆栈。它就在那里,当你执行一个递归调用时,你在那里分配空间,现在,在这里,我可能对参数、返回值和返回点有错误,也许还有更多错误。创建的是那些包含上下文信息的堆栈帧 您可以为参数留出所需的空间并返回0。但我认为不可能跳过返回点。因此,对于每一级递归,您总是需要非零内存 使无限递归成为可能的唯一方法是使所需的堆栈帧大小为0,而不产生堆栈溢出。我认为这是不可能的。他们可能指的是Recursion 递归中的堆栈内存分配,recursion,stack,Recursion,Stack,我被要求写一个没有边界条件的递归函数。然后,有人问我,是否有可能将内存分配绑定到正在创建的堆栈,以便计算机不会挂起。如果是,那么如何进行?2个假设。没有边界条件意味着无限递归。计算机挂起意味着堆栈溢出或应用程序崩溃。当你们给CPU无限循环工作时,计算机总是挂起 没有正在创建的堆栈。它就在那里,当你执行一个递归调用时,你在那里分配空间,现在,在这里,我可能对参数、返回值和返回点有错误,也许还有更多错误。创建的是那些包含上下文信息的堆栈帧 您可以为参数留出所需的空间并返回0。但我认为不可能跳过返回点
如果一种语言在每次函数调用时都分配一个帧,递归通常会导致堆栈溢出。然而,大多数基于递归的语言消除了尾部调用中的帧分配。如果在执行实现尾部调用的函数期间没有分配额外的内存,那么您将在不增加内存分配的情况下运行。所有这些问题都是向您提出的!那你想从这里得到什么?没有边界条件?所以它是一个永远不会返回的无限递归函数?我想知道,如果可能的话,怎么做?我当时没有回答这个问题。