C 递归和返回维护

C 递归和返回维护,c,recursion,C,Recursion,如果堆栈为1,并且每个帧由x*(x-1)组成,直到x==1,那么返回值如何与前一个值相乘 while doing recursion how many stacks are maintained inside for example in C program of factorial ? Is queue also maintained internally for recursion? Function Implementation: if(x==1){

如果堆栈为1,并且每个帧由x*(x-1)组成,直到x==1,那么返回值如何与前一个值相乘

while doing recursion how many stacks are maintained inside for example in C program of factorial ?
Is queue also maintained internally for recursion?

Function Implementation:

    if(x==1){ 

            return 1;

     }
     else{ 

          return x*facto(x-1); 
    }
以更简单的方式,让我们使用堆栈-->
返回
|2(1)——>2(1)的计算结果为2

|3(2)——>3(2)4(6)5*(24)您只有一个堆栈。堆栈上会有几个帧,每次调用函数时都会添加一个新帧


编辑:至少在没有更多可用堆栈空间之前,您将获得StackOverflow:)

请显示函数的实现。如果(x==1)返回1;否则返回x*事实(x-1)//假设x=5没有多个堆栈,每个线程只有一个堆栈,一旦它满了就满了。堆栈可以处理多少个递归?这取决于堆栈上的数据量(即局部变量和参数的数量和大小)以及堆栈大小的实际大小(可能因系统而异)。在特定情况下,当然,递归的数量取决于第一次调用的参数。不完全是我想要的,请参阅问题的进一步解释??下面是谁给出的答案将指向不同的根不完全是我要寻找的,请参阅问题的进一步解释??堆栈跟踪正在执行的函数中的所有变量。除此之外,它还跟踪执行的代码(stackpointer)。从函数调用返回时,该函数的结果将填充在占位符中。通过使用stackpointer,它知道在哪里继续执行代码。这些是堆栈工作原理的基础。是的,确切地说,下一个问题是当框架从堆栈中弹出时,堆栈指针实际上指向顶部元素,它释放了它在弹出之前指向的内存。。??那么它怎么知道它的前一个和后一个在框架中维护的变量呢?框架是否与某个源相互作用???正确,框架从堆栈中弹出。通过这样做,堆栈将释放此空间以供再次使用。
in more simple way lets take a stack -->


       returns
|2(1)|---->    2(1) evaluates to 2
|3(2)|---->    3(2)<______________| evaluates to 6
|4(3)|---->    4(6)<______________| evaluates to 24
|5(4)|---->    5*(24)<____________| evaluates to 120
------         finally back to main...