堆栈是否在以下代码中进入框架?如果数量 = 5。为什么我的输出为零..从 5 到 1 的数字呢?
void rec(int num)
{
cout << num << endl;
if( num > 0 )
return rec(num-1);
cout << "after" << num << endl;
}
它包括堆栈的概念吗?
堆栈是否在以下代码中进入框架?如果数量 = 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);
。
因此,对于上面的每个 nummer 0
,该函数将再次调用自身num-1
。
只有当num==0
你到达这条线时
cout<<"after"<<num<<endl;
这意味着对于您将输入的每个数字,该函数将不执行任何操作并 在该行number-1
之前cout<<"after"<<num<<endl;
再次调用自身,并且最后一次它不会再次调用它自己(因为num > 0
条件为假)并且它将打印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;
}