如何使堆栈在函数调用中工作

How to get the stack to work in function calls?

本文关键字:工作 函数调用 何使 堆栈      更新时间:2023-10-16

堆栈是否进入以下代码中的框架?如果num=5。为什么我的输出为零。。从5到1的数字怎么样?

void rec(int num)
{
    cout << num << endl;
    if( num > 0 )
         return rec(num-1);
    cout << "after" << num << endl;
}

它包括栈的概念吗?

"为什么我的输出为零"

看看你运作的逻辑。if(num>0)-return rec(num-1);
因此,对于0以上的每一个nummer,函数都将使用num-1再次调用自己
只有当num==0时,你才能到达这条线路

cout<<"after"<<num<<endl;

这意味着,对于您将输入的每个数字,函数将不执行任何操作,并在cout<<"after"<<num<<endl;行之前用number-1再次调用自己,并且在最后一次它不会再次调用自己(因为num > 0条件为false),它将打印0

如果您想查看"返回值",可以执行以下操作:

void rec(int num)
{
    cout << num << endl;
    if( num > 0 )
         rec(num-1);
    cout << "after" << num << endl;
}

return rec(num-1);在技术上是有效的,但由于该函数实际上并没有返回soemthing,所以它与编写相同

if (num > 0) 
{
    rec(num-1);
    return;
}