c语言 - 错误:"lvalue required as left operand of assignment"


void main()
{
    int sum=0;
    printf("%d",add(sum));
}
int add(int x)
{
    (x<=100) ? x=x+add(x+1) : x=0;
    return x;
}

在该功能中,我试图使用递归打印前100个自然数的总和。但是我将错误作为"作为分配的左操作数所需的lvalue"。谁能帮助我解决此错误并解释其背后的概念?

由于您始终设置x,因此将x放在左侧。所以而不是

(x<=100) ? x=x+add(x+1) : x=0;

使用

x = (x <= 100) ? x + add(x + 1) : 0;

替代,由于您立即将其归还,因此您可能立即将其返回:

return (x <= 100) ? x + add(x + 1) : 0;

该表达式中的()也不需要:

x = x <= 100 ? x + add(x + 1) : 0;
// or
return x <= 100 ? x + add(x + 1) : 0;

使用尾部递归您可以这样做。

免责声明可能会有一些语法错误,因为我不是C人,但是这个想法不是等待返回值来计算结果

int add(int ans ,int num){
if(num == 100)
return ans 
add(ans+num, num+1)
}
void main()
{
    int sum=0;
    printf("%d",add(sum, 0));
}

相关内容

最新更新