永发信息网

#include int fun(int*x,int n) { if (n==0) return x[0]; else

答案:1  悬赏:50  手机版
解决时间 2021-07-20 04:21
#include int fun(int*x,int n) { if (n==0) return x[0]; else return x[0]+fun(x+1,n-1); }
void main()
{
int a[]={1,2,3,4,5,6,7};
printf(%d\n,fun(a,2) );
}
最佳答案

#include
int fun(int*x,int n)
{
if (n==0)
return x[0];
else
return x[0]+fun(x+1,n-1);
}
如果n = 0,那么返回 数组 x的第一个元素,如果 n !=0 那么后面将会是一个递归算法.
请把代码贴完,还有你想说明的是什么?想问什么?
再问: 这题怎么求解,能把整个过程写一下吗?递归算法,最后一步n==0时,返回值 x[0]的值是多少啊?
再答: 首先将数组 a 和 2 传入 fun() 将数组 a 的首地址赋给 指针x n 不等于0 所以 fun 返回 x[0]+fun(x+1, n-1) x[0]就是数组的第一个元素,即为:1 1+fun(x+1, n-1), 我们设此时的fun(x+1, n-1)值为 K; 现在我们需要计算 k 这里是第二次调用 fun函数,而且是在 fun函数自己里面调用的,这就叫递归。 因为将数组 a 的首地址赋给 指针x,所以 x+1指的就是数组中的第二个元素即 a[1],值为2,而此时的a[1]赋给指针x,那么a[1]相当于fun()参数x的x[0],这个问题一定要明白。 现在看 n-1 任然不为0 所以 返回x[0]+fun(x+1, n-1),我们设此时的fun(x+1, n-1)值为 j;现在我们计算j 这个时候传进来的数组起始地址是a[1],所以相对于传进来的参数而言,此时的x[0]相当于数组的a[1]。 所以返回为2+ fun(x+1,n-1) 我们发现这个时候 n-1等于0 了 返回x[0],而此时的 x[0]相当于 a数组中的 a[2]; 即j的值为3 现在回到第一步我们得到的是 1+k 而k=2+j 我们得到的j=3 那么: 1+ 2 +3 =6。就是我们最后的结果了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
金帝美滋滋巧克力的价格?
今年冬天怎么这么冷啊?
新主板点不亮
风轻云淡的下一句,风轻云淡下一句是什么
沈阳从江东街如何坐车到大东区教育局
安装炫舞是出现了这个问题
税控盘怎么修改开票人,税控开票软件金税盘,
暗恋上了一个明知道不喜欢自己的女孩怎么办?
电脑系统错误怎么修啊
谁可以送我个瑞星杀毒软件序列号和用户ID?
冬天来了,纯牛奶冷着喝好呢,还是热了再喝好
刘德华、成龙李连杰在中国谁的名气大
头痛很久问题:星座是按公历算还是农历?
Winform中如何实现在GridView上添加颜色选择
美丽春景的诗句,描写春天的好词佳句和诗句。
推荐资讯
为什么越休息越懒呢?怎么才能提起精神去学习
白丸狂战用好不?如果不好还是用什么好
QQ三国更新了服务器又可以开齐心吗?
尊师重道—XXXX—XXXX—XXXX—XXXX—XXXX—XX
流感裂变的疫苗是防什么的?
婴儿几岁会走路,几岁会说话?
QQ华夏雪人活动主要是些什么东西 丰富不啊
大公仔怎么洗,毛绒玩具脏了怎么办啊!
世界有多少种卫星..详细回答
求 水樹奈奈歌曲-单放机(リプレイマシン)中
古人说坚持励志名言,靠别人不如靠自已励志坚
看一下这款显卡在西安市场价卖多少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?