【问题标题】:char 5: error: control may reach end of non-void functionchar 5:错误:控制可能到达非空函数的结尾
【发布时间】:2020-07-26 20:00:21
【问题描述】:

我是编程新手,我试图在 LeetCode 上解决这个问题:

给定一个非负整数 num,重复添加它的所有数字,直到结果只有一位。 输入:38 输出:2 解释:过程是这样的:3 + 8 = 11, 1 + 1 = 2。 由于 2 只有一位,所以返回它。

我的解决方案:

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.

请提出解决此错误的方法

【问题讨论】:

    标签: c++ while-loop add


    【解决方案1】:

    在这一行:

    addDigits(sum);
    

    您正在调用该函数,但您没有对它的返回值做任何事情。您必须实际返回值:

    return addDigits(sum);
    

    【讨论】:

      【解决方案2】:

      在您的代码中:

      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;
              }
              
          }
      

      你有一个额外的东西,而是这样做:

      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;
              
          }
      

      【讨论】:

        猜你喜欢
        • 2013-10-06
        • 1970-01-01
        • 2014-05-11
        • 1970-01-01
        • 1970-01-01
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多