C语言一道递推选择题,求学霸仔细分析下,没怎么看懂?

 我来答
快乐翔云740
2021-03-23 · TA获得超过383个赞
知道答主
回答量:152
采纳率:69%
帮助的人:34.5万
展开全部
这是典型的递归,退出条件是n等于1,
递归的式子是a[0]+fun(a+1,n-1);
递归的一个重要的点就是,不要把fun()里面调用的函数看成fun()本身,要看成另一个函数
如下:fun(a+2,4)->fun1(a+3,3)->fun2(a+4,2)->fun3(a+5,1);根据题目,在fun3(1)被调用时,n为1,不满足条件,返回一个值a[0],也就是a+5,即6,这个1在fun2()里面就return a[0]+6(此处a[0]为a+4,也就是5)加起来11,返回给fun1(),就是11+4,fun就是15+3,所以结果就是18。
追问
前面看懂了,就是fun3=a[0]为什么返回的是6呢,从这之后还是没理解,比较笨,望在赐教
追答
fun3()传入的参数是a+5,所以fun3()里面的a其实是数组a的第6个数的指针,这里你需要了解一下数组的名称是一个指针,存储的是数组的第一个数的地址,传入a+5就相当于传入的数组里第6个数字的地址,所以这里的a[]其实是第六个数的地址,这样确实有点绕,需要对指针有所了解,并且对函数的传参有一定的理解。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式