#include int f(int t[],int n); main { int a[4]={1,2,3,4},s; s=f(a,4);
printf("%d\n",s);}intf(intt[],intn){if(n>0)returnt[n-1]+f(t,n-1);elsereturn0;求解题过程和答案...
printf("%d\n",s);}
int f(int t[],int n)
{ if(n>0) return t[n-1]+f(t,n-1);
else return 0;
求解题过程和答案 展开
int f(int t[],int n)
{ if(n>0) return t[n-1]+f(t,n-1);
else return 0;
求解题过程和答案 展开
2个回答
展开全部
这是一个用递归求数组之和的题目.实际上就是 s= 4+3+2+1 = 10;
int f(int t[],int n);
main()
{
int a[4]={1,2,3,4},s;
s=f(a,4);
printf("%d\n",s);
}
int f(int t[],int n)
{
if(n>0)
{
printf("%d %d\n",t[n-1],n);
return t[n-1]+f(t,n-1);
}
else
return 0;
}
int f(int t[],int n);
main()
{
int a[4]={1,2,3,4},s;
s=f(a,4);
printf("%d\n",s);
}
int f(int t[],int n)
{
if(n>0)
{
printf("%d %d\n",t[n-1],n);
return t[n-1]+f(t,n-1);
}
else
return 0;
}
更多追问追答
追问
能不能介绍一下详细的解题过程啊?就一个答案看不懂啊!拜托了
追答
递归的思想就是自己调用自己,我觉得那个int f(int t[],int n)函数
已经很详细了,可能是你对递归的思想没有理解,那个函数在调用自己的过程中,n的值是不断变化的,
数组是每次都一样的,第一次调用n=4,t[4-1] +f(t,3),那么下次进入f函数就变成n=3,t[3-1]+f(t,2),....,依次类推,知道n=0时,递归结束,实际整个调用就变成s=t[3]+t[2]+t[1]+t[0] = 4+3+2+1 = 10
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询