错题小结3

问题:以上代码的输出结果是?

答案:

解析:

数组a:sizeof(a) / sizeof(1) = 8 * 4 / 4 = 8;

接着在给 l 赋值时递归调用function2函数,即 function2(a,0,8) -> function2(a,0,4) -> function2(a,0,2) -> function2(a,0,1)

执行function(a,0,1)时,e - b <= 1成立,执行"return abs(a[b] - a[e]) >= 3 ? a[b] : a[e];"                    即return 10,此时l = 10,返回到function2(a,0,2)里继续往下执行,l % 2 == 0成立,r = function2(a,2,2),由于function2(a,2,2)中 e - b <= 1成立,return abs(a[2] - a[2]) >= 3 ? a[2] : a[2]即return 8,此时r = 8;接着判断 l | r 即 10 | 8 即 1010 | 1000 = 1010 即return 10,此时l = 10,返回到function2(a,0,4)中继续往下执行,l % 2 == 0成立,r = function2(a,3,4)(return abs(a[3] - a[4]) >= 3 ? a[3] : a[4]即return 5),此时r = 5;接着判断 10 | 5即 1010 | 0101 = 1111即return 15,此时l = 15,返回function2(a,0,8)中继续往下执行,l % 2 == 0不成立,return l 即返回15,最终结果为15.

数组b:sizeof(b) / sizeof(1) = 8 * 4 / 4 = 8;

function2(a,0,8)-->function2(a,0,4)-->function2(a,0,2)-->function2(a,0,1); 

function2(a,0,1):return  abs(a[0]-a[1])>=3?a[0]:a[1]即return 5(此时l=5),返回到function2(a,0,2)里继续往下执行; 

l%2==0不成立,return l(返回5,此时l=5),返回到function2(a,0,4)里继续往下执行;

l%2==0不成立,return l(返回5,此时l=5),返回到function2(a,0,8)里继续往下执行;

l%2==0不成立,return l(返回5),即最终结果为5.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lllllllll231

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值