堆栈是否在以下代码中进入框架?如果num = 5。为什么我的输出为零...... 5到1的数字怎么样?
void rec(int num)
{
cout << num << endl;
if( num > 0 )
return rec(num-1);
cout << "after" << num << endl;
}
它是否包含堆栈的概念?
答案 0 :(得分:1)
“为什么我的输出为零”
看看你的功能逻辑。 if(num>0)
- return rec(num-1);
。
因此,对于0
以上的每个nubmer,该函数将仅使用num-1
再次调用自身
只有num==0
你才会到达这一行
cout<<"after"<<num<<endl;
意味着对于您输入的每个数字,该函数将不执行任何操作,并在number-1
之前使用cout<<"after"<<num<<endl;
再次调用自己行,并且最后一次不要再调用它自己(因为num > 0
条件为假)并且它将打印0
。
答案 1 :(得分: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;
}