分析方法调用
请分析如下的递归方法调用:
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是形参变量)
.....
栈底