69,336
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
/*
假设输出sum;
1.fun(a,3);传入a地址,即a[0]地址,*x=&a[0],n=3;
2.n!=0,执行return ( x[0]+fun(x+1,n-1) ),x[0]=a[0]=1.
再次调用fun(x+1,n-1);即调用fun(x+1,2);
此时sum=1+fun(x+1,2);
3.fun(a,2);传入a[1]地址,*x=&a[1],n=2;
4.n!=0,执行return ( x[0]+fun(x+1,n-1) ),x[0]=a[1]=2.
再次调用fun(x+1,n-1);即调用fun(x+1,1)
此时sum=1+2+fun(x+1,1);
5.fun(a,2);传入a[2]地址,*x=&a[2],n=1;
6.n!=0,执行return ( x[0]+fun(x+1,n-1) ),x[0]=a[2]=3.
再次调用fun(x+1,n-1);即调用fun(x+1,0)
此时sum+1+2+3+fum(x+1,0)
7.n==0,执行return (x[0]),x[0]=a[3]=4
此时sum=1+2+3+4=10;
*/
int fun(int *x,int n)
{
if(n==0)
{
printf("%d\n",&x[0]);
return (x[0]);
}
else
{
printf("%d\n",&x[0]);
return ( x[0]+fun(x+1,n-1) );
}
};
void main()
{
int a[]={1,2,3,4,5,6,7};
printf("%d\n",fun(a,3));
}