首页 > 试题广场 >

请你判断一下这段C++代码的实现的功能是什么样的?intfu

[单选题]
请你判断一下这段C++代码的实现的功能是什么样的?
    int func(int n) {
        n && (n += func(n-1));
        return n;
    }


  • 没有递归出口,无法结束
  • 实现了n+n-1+...2+1的功能
  • 实现了n-(n-1)+(n-2)-...-2+1的功能
  • 实现了求n的二进制里面1的个数的功能
  • 实现了求n的二进制里面0的个数的功能
&&逻辑与运算符 前面若为假则不执行后一句,如果n为非零,则执行,若n为0,则后半句被短路,不执行
|| 前面的为真,后面也一样不判断了
发表于 2021-04-27 21:14:48 回复(0)
此时的 n && 是利用了&&的短路性质 如果n为true的逻辑判断通过才会执行后面的代码。
所以此时函数可以改写为
int func(int n){
    if(n){
        n += func(n-1);
    }
    return n;
}
if(n)也就是if(n!=0)的意思。

发表于 2022-02-28 11:20:40 回复(0)
使用&短路特性
发表于 2021-08-12 20:22:56 回复(0)
短路特性
发表于 2022-01-24 10:30:26 回复(0)