c++的提问

来源:百度知道 编辑:UC知道 时间:2024/06/18 22:58:34
# include<iostream.h>
# include<stdlib.h>
int fun1(int a[], int n);
void main()
{
int b[8]={5,16,7,9,20,13,18,6};
int s=fun1(b,8);
cout<<s<<endl;
}

int fun1(int a[], int n)
{
if(n<0){
cerr<<"参数n值非法!"<<endl;
exit(1);
}
if(n==1) return a[0];
else return a[n-1]+fun1(a,n-1);
}

其中int fun1(int a[], int n);
int s=fun1(b,8);
else return a[n-1]+fun1(a,n-1);怎么解释.谢谢了
谢谢了,不过int fun1(int a[], int n); 里的int a[], int n怎么解释,我在书上找不到.顺便解释int s=fun1(b,8);
里的b,8 再次谢谢二位了

函数int fun1(int a[], int n); 参数有两个,一个是传地址的指针参数(数组就是指针),一个是传值的参数n。

s=fun1(b,8); 里的b是数组b[8]的第一个元素b[0]的地址,也即是指针。(定义一个数组,数组明就是指针,它指向数组第一个元素)
fun1的功能是:求数组各元素和。所以传递两个参数,一个是数组的首地址,利用首地址配合第二个参数n,得到数组各个元素的值,递归求和。

你用了递归算法.
int fun1(int a[], int n); //是函数预声明.因为你的函数写在main函数后面,要加上它的声明才行.
int s=fun1(b,8); //把函数fun1返回的整型值赋给s
else return a[n-1]+fun1(a,n-1);//这里是调用了fun1自己函数,参数变了而已.这就是所谓的递归咯.

fun的功能是:数组各元素求和。其中n为数组中元素的个数。
a[n-1]+fun1(a,n-1); /*a的最后以后元素加上前n-1个元素的和*/

fun1(int a[],int n);里的int a[]表示函数的第一个参数是一个整型数组,int n 表示第二个参数是一个整数,从函数的定义来看n是代表数组的长度.
b作为数组名同时也是数组的地址,所以可以将b传给fun1,8自然就是表示b的长度为8.