如何使堆栈在函数调用中工作
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
以上的每一个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;
}
相关文章:
- 函数调用中参数的顺序重要吗
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 变量没有改变?通过向量的函数调用
- 在两个类中共享相同的函数调用,并在不需要时避免空实例化
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 我知道函数调用中存在歧义.有没有办法调用foo()函数
- 模板函数调用
- 获取从C++中同一类中的构造函数调用的方法返回的值
- 析构函数调用
- 成员函数调用和C++对象模型
- 递归函数调用在后台工作
- 当在函数调用中递增值时,程序正常工作,但是如果我们在单独的行中增加值而不是呼叫函数,则会出现错误.为什么
- 运算符<<使用temp变量工作,但不直接使用函数调用
- 如何使堆栈在函数调用中工作
- 通过中间函数调用WriteConsole无法正常工作
- 在C/ c++中,当两个函数具有相同的名称,一个函数调用另一个函数时,它将工作
- c++ Lambda——在接下来的函数调用中不工作的字符串参数
- 这个变量参数列表函数调用是如何工作的
- 函数调用在反汇编代码中似乎无法正常工作
- C++:"such strings"类型。使像 fun( "str" ) 一样的函数调用工作