5个回答
展开全部
当n=5时,返回值是*p[0]+add(p+1,5-1)=1+add(p+1,4)
当n=4时,add(p+1,4)就等于*p[1]+add(p+1,5-1)=2+add((p+1)+1,4-1)
当n=3时,add(p+1,4-1)就等于*p[2]+add(p+1,4-1)=3+add(p+1+1+1,3-1)
当n=2时,add(p+1,3-1)就等于*p[3]+add(p+1,3-1)=4+add(p+1+1+1+1,3-1)
当n=1时,add(p+1,2-1)就等于*p[5]=5
所以将add一次带回当5时*p+add(p+1,n-1)=*p[0]+*p[1]*+p2]*+p[3]*+p[4]*+p[5]=1+2+3+4+5=15
当n=4时,add(p+1,4)就等于*p[1]+add(p+1,5-1)=2+add((p+1)+1,4-1)
当n=3时,add(p+1,4-1)就等于*p[2]+add(p+1,4-1)=3+add(p+1+1+1,3-1)
当n=2时,add(p+1,3-1)就等于*p[3]+add(p+1,3-1)=4+add(p+1+1+1+1,3-1)
当n=1时,add(p+1,2-1)就等于*p[5]=5
所以将add一次带回当5时*p+add(p+1,n-1)=*p[0]+*p[1]*+p2]*+p[3]*+p[4]*+p[5]=1+2+3+4+5=15
展开全部
就是一个循环问题
指针先放在p[0]处,不断的累加,当n=1时循环结束,所以就是输出p[0]+p[1]+p[2]+p[3]+p[4]的值
或者也可以改成是这样的程序,不过这样就不是指针
main()
{
int i,j,s,p[9]={1,2,3,4,5,6,7,8,9};
j=0;
s=0;
for(i=5;i>0;i--)
{s=s+p[j];
j++;
}
printf("/n%d",s);
}
类似,好久没有编程了。。。有些小的错漏请谅解
指针先放在p[0]处,不断的累加,当n=1时循环结束,所以就是输出p[0]+p[1]+p[2]+p[3]+p[4]的值
或者也可以改成是这样的程序,不过这样就不是指针
main()
{
int i,j,s,p[9]={1,2,3,4,5,6,7,8,9};
j=0;
s=0;
for(i=5;i>0;i--)
{s=s+p[j];
j++;
}
printf("/n%d",s);
}
类似,好久没有编程了。。。有些小的错漏请谅解
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
add(p, 5) --> add(p + 1, 4) --> add(p + 2, 3) --> add(p + 3, 2) --> add(p + 4, 1)
return: 1 + 14 = 15 <-- 2 + 12 = 14 <-- 3 + 9 = 12 <-- 4 + 5 = 9 <-- 5
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个很简单,的。只有 return *p的时候才能输出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
调用add函数,当n=1时候停止,返回*p,*p加上*p后面的一个,一直到n=1,n=5,4,3,2,1.。*p从1加到5等于15
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询