c语言看程序写结果?

麻烦各位大佬帮帮忙,最后就详细解答过程谢谢了... 麻烦各位大佬帮帮忙,最后就详细解答过程谢谢了 展开
 我来答
自我编程
2021-06-20 · 科技优质答主
自我编程
采纳数:1481 获赞数:4283

向TA提问 私信TA
展开全部

答案是:7。

被调函数sub是一个递归函数,有两处注意点:

一、参数1这里传递的是实参x的地址,因此sub函数中a地址里的值改变,x的值也变。

二、注意sub中if没有大括号,作用域仅限下一句代码,也就说*a+=k;这句代码是在if作用域之外的。无论if判读成不成立,*a+=k;都会执行。

所以按照递归顺序执行:

第一层:n的值为8,k的值为1。执行代码:sub(x地址,4,2);x+=1;(*a的值就是x的值)

第二层:n的值为4,k的值为2。执行代码:sub(x地址,2,4);x+=2;

第三层:n的值为2,k的值为4。执行代码:x+=4;

递归函数中自调后的代码是从最底层往开始执行,一层一层往回返回的。

所以实际执行顺序是:x+=4;x+=2;x+=1。

x初值0,所以是7。

听不清啊
高粉答主

2021-06-20 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yx陈子昂
高粉答主

2021-06-21 · 每个回答都超有意思的
知道大有可为答主
回答量:3.2万
采纳率:75%
帮助的人:3874万
展开全部
这是一个递归算法,会把每一次k的值都加起来
调用sub(一共三次)
sub( , 8, 1)
sub( , 4, 2)
sub ( , 2, 4)
因此x = 4+2+1 =7
随后输出7
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式