04-01递归原理分析_分析方法调用

2014-11-24 12:38:40 · 作者: · 浏览: 24

分析方法调用

请分析如下的递归方法调用:

int f(int[] a, int n)
{
if(n==0) return a[0];
return f(a, n-1) + a[n];
}

1. 它实现了什么功能?

2.int[] a = {1,2,3,4};

int k = f(a,3);

当 n = 0 时,试画出栈中局部变量的情况。

-------------------------------------------------------------------------------------------------------------------



1. 该方法实现了对数组的前边n+1个元素求和。


2. 当n=0时,栈中局部变量的情况:


int n = 0
int[] a = 数组地址
int n = 1
int[] a = 数组地址
int n = 2
int[] a = 数组地址
int n = 3
int[] a = 数组地址
int k
int[] a = 数组地址 (这个是主调程序的局部变量,前边的a是形参变量)
.....
栈底