Java编程算法基础----递归原理分析

来源:互联网 发布:怎样做淘宝网店 编辑:程序博客网 时间:2024/05/29 10:30
递归调用与一般的函数调用过程完全相同,只是被调用方法与主调方法相同而已。函数调用与正确返回是通过栈结构来实现的。

本节仔细分析了递归过程中,函数的调用、参数传递、函数返回的过程细节;通过分析揭示出递归调用的本质



















1.函数调用的执行过程是串行的

2.形式参数是调用函数时临时创建的


void f(){int a = 5;int b = 6;;int c = g(a,b);c++;}int g(int x, int y){return x + y;}




















在函数f中声明了3个局部变量a,b,c, 在内存中利用栈为其分配相应的内存空间,如右图

void  f(){    在第一个大括号开始时,分配局部变量

}  //在最后一个大括号,释放已经分配的局部变量























































































package NO4;public class Test02 {public static int f(int n){  if(n == 0)//if(n <= 1)  return 1;return n * f(n - 1);}public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print(f(5));}}










理解递归的关键在于理解形式参数在栈中存在多层的这么一种情况

可以类比生活中的一个例子:

从前有个山,山里有个庙,庙里住着俩和尚,老和尚给小和尚讲故事,讲的故事是" 从前有个山,山里有个庙"

看似像是循环,其实不是,   故事里的山和老和尚所处的山不是一回事

每次深入一层都有新的内容(故事里的可看做是形参)

0 0