char 5: error: control may reach end of non-void function
char 5: error: control may reach end of non-void function
我是编程新手,我试图在 LeetCode 上解决这个问题,其中:
给定一个非负整数num,重复将其所有数字相加,直到结果只有一位。
输入:38
输出:2
解释:这个过程是这样的:3 + 8 = 11, 1 + 1 = 2。
由于 2 只有一个数字,return 它。
我的解决方案:
class Solution {
public:
int addDigits(int num) {
int sum =0,a =0;
while(num!=0){
a = num%10;
sum = sum + a;
num = num/10;
}
if(sum>9){
addDigits(sum);
}else{
return sum;
}
}
};
此代码在其他编译器上运行良好,但当我尝试在 LeetCode
提供的 IDE 上 运行 时出错
错误:
Line 18: Char 5: error: control may reach end of non-void function [-Werror,-Wreturn-type]
}
^
1 error generated.
请提出克服此错误的方法
这一行:
addDigits(sum);
您正在调用该函数,但您没有对其 return 值执行任何操作。您实际上必须 return 值:
return addDigits(sum);
在您的代码中:
int addDigits(int num) {
int sum =0,a =0;
while(num!=0){
a = num%10;
sum = sum + a;
num = num/10;
}
if(sum>9){
addDigits(sum);
}else{
return sum;
}
}
你有一个额外的 else 可以这样做:
int addDigits(int num) {
int sum =0,a =0;
while(num!=0){
a = num%10;
sum = sum + a;
num = num/10;
}
if(sum>9){
return addDigits(sum);
}
return sum;
}
我是编程新手,我试图在 LeetCode 上解决这个问题,其中:
给定一个非负整数num,重复将其所有数字相加,直到结果只有一位。 输入:38 输出:2 解释:这个过程是这样的:3 + 8 = 11, 1 + 1 = 2。 由于 2 只有一个数字,return 它。
我的解决方案:
class Solution {
public:
int addDigits(int num) {
int sum =0,a =0;
while(num!=0){
a = num%10;
sum = sum + a;
num = num/10;
}
if(sum>9){
addDigits(sum);
}else{
return sum;
}
}
};
此代码在其他编译器上运行良好,但当我尝试在 LeetCode
提供的 IDE 上 运行 时出错错误:
Line 18: Char 5: error: control may reach end of non-void function [-Werror,-Wreturn-type]
}
^
1 error generated.
请提出克服此错误的方法
这一行:
addDigits(sum);
您正在调用该函数,但您没有对其 return 值执行任何操作。您实际上必须 return 值:
return addDigits(sum);
在您的代码中:
int addDigits(int num) {
int sum =0,a =0;
while(num!=0){
a = num%10;
sum = sum + a;
num = num/10;
}
if(sum>9){
addDigits(sum);
}else{
return sum;
}
}
你有一个额外的 else 可以这样做:
int addDigits(int num) {
int sum =0,a =0;
while(num!=0){
a = num%10;
sum = sum + a;
num = num/10;
}
if(sum>9){
return addDigits(sum);
}
return sum;
}