我有一个c代码
int foo( int *p, int n){
int a[81];
int i,v;
for( i = 0; i < n ; i++){
a[i]=p[i]
if( n == 1 ) return a[0];
v=foo ( a, n-1);
if( v > a[n-1] )
return v;
else
return a[n-1];
}
int main ( void ){
int b[81], i;
for( i = 0; i < 81; i++){
b[i]=rand();
foo(b,81);
return 0;
}
我需要找出变量a存在多少个实例(最大数量)我的回答是81,但这是错误的,我不知道应该是什么数字。我怎么能确定它?
答案 0 :(得分:1)
main将调用该函数82次,每次func将在递减n
项的循环中递归调用80次。
所以总共会是81 * 81。
编辑:我没有注意到第一次迭代后的返回,所以实际上它的数量非常小。
答案 1 :(得分:0)
将a
中的元素数量设置为任意高。
构建函数以将元素分配给a
,并仅使用该函数设置a
的元素。您可以使用此功能确保您不要尝试在a
的范围之外书写。 (否则你的程序的行为将是不确定的,因此任何结果都将毫无意义)。
编码&#34;水印&#34;该函数中的static int
用于记录访问的最大索引。
运行程序并记下为(3)设置的变量值。
答案 2 :(得分:0)
声明一个全局计数器 - 它将被初始化为零。在该功能中,与&#39; a&#39;相同。声明,递增计数器。
Printf()在main()的末尾。