0

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

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

它包括堆栈的概念吗?

4

2 回答 2

1

“为什么我的输出为零”

看看你的功能逻辑。if(num>0)- return rec(num-1);
因此,对于上面的每个 nummer 0,该函数将再次调用自身num-1
只有当num==0你到达这条线时

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

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

于 2013-08-03T13:26:23.180 回答
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;
}
于 2013-08-03T13:36:51.570 回答