繁体   English   中英

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

[英]How to get the stack to work in function calls?

以下代码中堆栈是否进入框架? 如果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 ,该函数将再次使用num-1调用。
而且只有当num==0您才可以进入此行

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

这意味着对于您将输入的每个数字,该函数将不执行任何操作,并在cout<<"after"<<num<<endl; 之前number-1再次调用自身cout<<"after"<<num<<endl; 行,最后一次它将不会再次调用self(因为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); 从技术上讲是有效的,但是由于该函数实际上并未返回任何东西,因此它与编写相同:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM