我们使用以下规则定义整数的超级数字:
给定一个整数,我们需要找到这个整数的超级数字。
如果x只有1位数,那么它的超级数字是x。否则,x的超级数字等于x的数字之和的超级数字。例如,超级数字9875将计算为:
super_digit(9875) 9+8+7+5 = 29
super_digit(29) 2 + 9 = 11
super_digit(11) 1 + 1 = 2
super_digit(2) = 2
数字p是通过串连字符串n,k来创建的。
这是我准备的代码:-
int superDigit(string n, int k) {
static string m=n;
for(int i=1;i<k;i++)
{
n=n+m;
}
int num2=stoi(n);
if(num2%10==num2)
{
return num2;
}
else
{
int digit{};
int sum{};
while (num2!=0)
{
digit=num2%10;
sum+=digit;
num2/=10;
}
string sum1=to_string(sum);
superDigit(sum1,0);
}
}
它显示的是error= "control reaches end of non-void function [-Werror=return-type]"
发布于 2022-08-03 15:09:42
这在我身上发生了一段时间,我发现编译器假设如果if语句didin不执行怎么办,所以在本例中,程序将继续在else块上继续,当它到达结束时,它需要返回int,但在其他语句的末尾没有返回。所以,只需添加一个返回某物的
https://stackoverflow.com/questions/73220794
复制相似问题