读题
递归,就是运行时候自己调用自己,最近写到一个递归算法时,想知道程序具体运行的顺序。查看了一些资料,推荐这篇文章《简单易懂的现代魔法_递归》,有动图,易于理解。
递归,最重要的两点:
- 有明确的终止条件,防止无限循环;
- 有递归函数,保证自己能够调用自己
递归函数在实现的过程中,是一个调用栈的过程。栈是一种后进后出式的数据结构,数据在表的同一端压入(PUSH)或者弹出(POP)。函数在调用另一个函数时,当前函数会处于暂定、未完成的状态,暂停函数的所有变量的值仍然会保存在内存中,直到函数执行完毕,所占内存会被弹出栈。
下面是一个递归代码以及运行结果,加了一些输出语句,帮助看清执行顺序。
问题描述:
用递归的方法求整数的N次方,代码如下:
public class NPower {
public double expCalculate(int x,int n) {
double y;
int m = n >> 1;
System.out.println("n = "+n + ", m = "+m);
if(n ==