执行结果见图片
#include <iostream>
using namespace std;
void div(double val)
{
cout << "Entering val =" << val <<endl;
if(val > 1)
div( val / 2 )
else
cout << "--------------------------" << endl;
cout << "Leaving val =" << val <<endl;
}
int main()
{
div(1024);
return 0;
}
你这两个cout啊
写在递归调用前面的cout会正序输出,写在递归调用后面的cout会倒序输出
你这个执行结果第7行应该是if(val > 1)吧
一个是Entering ,一个是Leaving
1、你这个if(val < 1)逻辑不应该打印这样的结果的,结果应该是
Entering val =1024
Leaving val =1024
2、递归类似于压栈,是先进后出,也就是递归调用前的先执行,一直执行到不再调用递归函数,开始从内往外执行递归函数下边的语句。
如果你的if判断是if(val > 1)则结果就是你贴出来的这个。
内存空间存储变量的,递归是自己调用自己
关于递归,如果初学弄不明白执行过程,可以不需要理解。只需要了解一点:函数的功能。你知道div函数是干啥的,以及它的思路,执行过程就肯定不会出错。