首页 > 试题广场 >

func函数如下,则func(10)的返回值为()

[单选题]
代码段
int func(int x) {
    return 2 == x ? 1 : x + func(x - 2);
}
则func(10)的返回值为()
  • 30
  • 29
  • 55
  • 54
10++8+6+4+2犯错集合。。。。。。
发表于 2021-04-23 13:31:27 回复(2)
10+8+6+4+1
发表于 2017-08-10 23:17:40 回复(3)

代码改成下面这样,就清楚多了



== 是左到右结合
==的优先级比 ?: 的高
?: 右到左结合

所以结果是 1+4+6+8+10

注意: 这个fun 只能传入大于0 的 2 的倍数,其他 0,1,3 都会导致栈溢出


这个题看半天最后才明白,所以把解释发出来

编辑于 2022-03-03 14:26:21 回复(0)
043头像 043
三目运算符 ?: (<表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果.

得出来的x等于2吗  等于就为1,不等于就10+(10-2)...(8-2)...

10+8+6+4+1
发表于 2022-03-06 15:47:16 回复(0)
网页没图
发表于 2019-06-18 19:03:39 回复(0)
==的优先级高于三目运算符
发表于 2022-05-05 20:05:57 回复(0)
递归退出条件   2==x   最后一个值注意是返回1。
发表于 2023-11-01 19:17:09 回复(0)
10+8+6+4+2,选A?
没看到三目运算符? :,所以是10+8+6+4+1,选B!
发表于 2023-07-26 09:13:08 回复(0)