关于迭代的有关问题(还有后++)
关于迭代的问题(还有后++)
这是求阶乘的递归函数,如果把result里的v1-1换成v1--,程序会崩溃,我知道v1会始终是5.但是后--毕竟还是会自减1的,不知道自减1到底发生在什么时候,递归返回原函数的时候不会自减嘛?到底后--是在什么的后面?下一个操作,还是?
------解决思路----------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int fact(int);
int main()
{
int ivec;
cin>>ivec;
cout<<fact(ivec)<<endl;
return 0;
}
int fact(int v1)
{
if(v1>1)
{
int result=fact(v1-1)*v1;
return result;
}
return 1;
}
这是求阶乘的递归函数,如果把result里的v1-1换成v1--,程序会崩溃,我知道v1会始终是5.但是后--毕竟还是会自减1的,不知道自减1到底发生在什么时候,递归返回原函数的时候不会自减嘛?到底后--是在什么的后面?下一个操作,还是?
------解决思路----------------------
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出